我对此查询感到绝望。我有两个表table1和table2,表是相同的但它们有不同的数据。我正在尝试通过列代码和制造商删除重复项。为此,我需要来自table2的table1 ID的最终结果ID以及列代码和制造商
SELECT * FROM (
SELECT id,code,manufacturer FROM table1 WHERE manufacturer = 1
UNION SELECT id,code,manufacturer FROM table2 WHERE manufacturer = 1
) AS t GROUP BY code HAVING COUNT(*) > 1
但是在结果中我只获得了table1的值。没关系,但我只需要从table2获取id。请任何人都可以给我一些提示如何做到这一点?
答案 0 :(得分:0)
您有两个基本问题:
问题1:
当您使用UNION
时,您正在使用UNION ALL
,因为UNION
会删除重复内容!
问题2:
这不是解决问题的正确方法。您应该使用简单的 join ,而不是工会
试试这个:
SELECT
t1.id as table1_id,
t2.id as table2_id,
t1.code,
t1.manufacturer
FROM table1 t1
JOIN table2 t2
ON t2.code = t1.code
AND t2.manufacturer = t1.manufacturer
WHERE manufacturer = 1 -- this WHERE clause is optional
您对WHERE
子句的使用有点奇怪 - 考虑将其删除以获取所有制造商的所有重复项。