使用UNION SELECT时删除重复的结果

时间:2011-10-03 20:42:07

标签: mysql select group-by

我遇到了MySQL查询的问题。

比方说,我们有两个表:

id qty

1 ...... 1

2 ...... 1

3 ...... 1

4 ...... 3

id qty

1 ...... 2

2 ...... 1

6 ...... 1

7 ...... 2

我真正需要得到的是一个由id过滤的结果,所以没有重复的id。如果它们是两个相同的id,则只考虑具有更高数量的id。所以在理想情况下我会得到这个结果:

id qty

1 ...... 2

2 ...... 1

3 ...... 1

4 ...... 3

6 ...... 1

7 ...... 2

到目前为止我尝试过的是一个UNION SELECT,它可以正常工作,但是当它遇到重复的ID时,它不会删除重复项,因为它只删除了重复的行。 GROUP BY也没有帮助。我仍然可以通过PHP中的数组对此进行排序,但如果可能的话,我希望在MySQL级别进行排序。

感谢大家的帮助,非常感谢!

2 个答案:

答案 0 :(得分:16)

  

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

答案 1 :(得分:14)

您可以使用UNION DISTINCT。也许它会运行......

SELECT * FROM t1 WHERE ...

UNION DISTINCT

SELECT * FROM t2 WHERE ...