MySQL запрос: выберите все идентификаторы и соответствующее максимальное значение из другой таблицы - PullRequest
0 голосов
/ 08 февраля 2020

Что я хочу: выбрать все идентификаторы из таблицы1 и максимальное значение из таблицы2. Если table2 не содержит id, 0 является его максимальным значением. Запрос, который я получил до сих пор:

SELECT t1.Id, max(t2.value) FROM table1 t1 JOIN table2 t2 USING(Id) GROUP BY t2.Id;

Но проблема этого запроса в том, что он возвращает идентификатор, только если он находится в обеих таблицах. Как я могу выбрать все идентификаторы из таблицы1 и 0 или максимальное значение из таблицы2?

1 Ответ

1 голос
/ 08 февраля 2020

Это случай использования LEFT:

SELECT t1.Id, coalesce(max(t2.value), 0) 
FROM table1 t1 LEFT JOIN table2 t2 
USING(Id) 
GROUP BY t1.Id;

Я также изменил предложение GROUP BY, чтобы использовать t1.id вместо t2.id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...