Как правильно выполнить группировку при использовании оператора Union?

Как упростить запрос (SELECT id, type From t1 where type = 1) union (SELECT id,type From t1 where type = 2) group by id так, чтобы группировка сохранила только те id, которые присутствуют только в первом запросе?
  • 22 ноября 2023 г. 14:39
Ответы на вопрос 3
Для правильной группировки при использовании оператора Union вам необходимо выполнить следующие шаги:

1. Объедините два запроса, используя оператор Union, как вы сделали в своем запросе:

(SELECT id, type FROM t1 WHERE type = 1) UNION (SELECT id, type FROM t1 WHERE type = 2)

2. Затем оберните объединенный запрос в подзапрос, чтобы выполнить группировку только по id, которые присутствуют только в первом запросе:

SELECT id, MAX(type) 
FROM 
  (SELECT id, type FROM t1 WHERE type = 1
   UNION 
   SELECT id, type FROM t1 WHERE type = 2) AS subquery
GROUP BY id

В результате будет выполнена группировка только для id, которые присутствуют только в первом запросе.
SELECT id, MIN(type) AS type
FROM t1
WHERE type IN (1, 2)
GROUP BY id 
 Use "AS" to rename the column "type" to "type"
Похожие вопросы