0

我正在尝试这样的左外连接

SELECT records.some_id FROM forms 
LEFT OUTER JOIN records
ON forms.form_id = records.form_id
ORDER BY records.some_id

这将为我提供 table:forms 的所有结果,包括一些不存在 records.form_id 的结果。但是,返回的结果开头有不匹配的行,我怎样才能把它们放在最后?

当前结果:

NULL
NULL
5
20
100

预期是:

5
20
100
NULL
NULL
4

2 回答 2

3

使用case. 一般来说你可以做

SELECT records.some_id FROM forms 
LEFT OUTER JOIN records
ON forms.form_id = records.form_id
ORDER BY case when records.some_id is not null 
              then 1 
              else 2 
         end,
         records.some_id

特别是在 MySQL 中,你也可以这样做

SELECT records.some_id FROM forms 
LEFT OUTER JOIN records
ON forms.form_id = records.form_id
ORDER BY records.some_id is not null,
         records.some_id
于 2013-09-02T13:14:58.293 回答
0

还放置一个 COALESEC 可能会有所帮助

SELECT records.some_id FROM forms 
LEFT OUTER JOIN records
ON forms.form_id = records.form_id
ORDER BY COALESCE(records.some_id,-1) DESC
于 2013-09-02T13:39:20.127 回答