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

Ond*_*rej 5 mysql select group-by

我遇到了MySQL查询的问题.

比方说,我们有两个表:

id数量

1 ...... 1

2 ...... 1

3 ...... 1

4 ...... 3

id数量

1 ...... 2

2 ...... 1

6 ...... 1

7 ...... 2

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

id数量

1 ...... 2

2 ...... 1

3 ...... 1

4 ...... 3

6 ...... 1

7 ...... 2

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

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

Mar*_*ers 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
Run Code Online (Sandbox Code Playgroud)


小智 15

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

SELECT * FROM t1 WHERE ...

UNION DISTINCT

SELECT * FROM t2 WHERE ...
Run Code Online (Sandbox Code Playgroud)

  • 注意:DISTINCT是默认选项,因此一个简单的UNION就足够了:)请参阅http://dev.mysql.com/doc/refman/5.6/en/union.html (7认同)