0

このような左外部結合を試みています

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

これにより、records.form_id が存在しない場所を含む、table:forms からのすべての結果が得られます。ただし、返された結果には最初に一致しない行があります。最後にそれらを取得するにはどうすればよいですか?

現在の結果:

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 に答える