Удаление дублирующихся результатов при использовании UNION SELECT - PullRequest
5 голосов
/ 04 октября 2011

У меня проблема с запросом MySQL.

Допустим, у нас есть две таблицы:

id qty

1 ...... 1

2 ...... 1

3 ...... 1

4 ...... 3

и

id Кол-во

1 ...... 2

2 ...... 1

6 ...... 1

7 ...... 2

На самом деле мне нужно получить результат, отфильтрованный по идентификатору, поэтому дублирующих идентификаторов нет.Если это два одинаковых идентификатора, будет рассматриваться только идентификатор с более высоким номером.Так что в идеальной ситуации я бы получил такой результат:

id кол-во

1 ...... 2

2 ...... 1

3 ...... 1

4 ...... 3

6 ...... 1

7 ......2

То, что я до сих пор пробовал, это UNION SELECT, который отлично работает, но когда он сталкивается с дублирующим идентификатором, он не удаляет дубликаты, так как удаляет только дублирующиеся строки.GROUP BY тоже не помогло.Я все еще мог бы разобраться с этим через массив в PHP, но я хотел бы, чтобы это сортировалось на уровне MySQL, если это возможно.

Спасибо всем за помощь, она очень ценится!

Ответы [ 2 ]

16 голосов
/ 04 октября 2011

GROUP BY тоже не помогло

В самом деле? Ты пробовал вот так?

SELECT id, MAX(qty) AS qty
FROM
(
    SELECT id, qty FROM table1
    UNION ALL
    SELECT id, qty FROM table2
) T1
GROUP BY id
14 голосов
/ 17 октября 2013

Вы можете использовать UNION DISTINCT.Может быть, это работает ...

SELECT * FROM t1 WHERE ...

UNION DISTINCT

SELECT * FROM t2 WHERE ...
...