У меня есть таблица contents
.
+------------+------+----------+
| content_id | year | has_file |
+------------+------+----------+
| 1 | 2017 | true |
| 2 | 2018 | true |
| 3 | 2016 | true |
| 4 | 2018 | true |
| 5 | 2018 | false |
+------------+------+----------+
Затем у меня есть таблица uploads
.
+----+------------+------------+
| id | content_id | filename |
+----+------------+------------+
| 1 | 2 | sample.jpg |
+----+------------+------------+
Я хочу получить данные в соответствии с последним годомсопровождаемый, если у него есть файл.
Я могу сделать это, используя запрос SELECT * FROM contents ORDER BY year DESC, has_file DESC
.
Проблема не во всех записях с has_file
, установленными на true
, которые действительно записаны натаблица uploads
.
Is может исключить все записи, которых нет в другой таблице, добавив WHERE EXISTS (SELECT 1 FROM uploads WHERE uploads.content_id = contents.content_id)
.
Но я не хочу исключать ее, я просто хочуон появляется последним, а записи с файлами появляются первыми.Возможно ли это?
Ожидаемый результат:
+------------+------+----------+
| content_id | year | has_file |
+------------+------+----------+
| 2 | 2018 | true |
| 4 | 2018 | true |
| 5 | 2018 | false |
| 1 | 2017 | true |
| 3 | 2016 | true |
+------------+------+----------+