0

我有以下两个表:

表 1(a、b、c、d) 表 2(a、b、c、d)

我的要求是合并这两个表;如果两个表中存在 a 列和 b 列组合的行(仅 a 和 b 列的组合,即 a 和 b 的值相同),则保留第一个表中的行。

我希望我很清楚。请提出查询。

注意:两个表都没有主键。

谢谢,

更新:

's1.a = s2.a AND s1.b = s2.b' 上的左连接给了我重复的行,而不是从第二个表中选择列 a 和 b 值不同的值。例如,如果我在 table1 中有 2 行:

11,22,33,44 -- 11,55,33,44

和 table2 中的 2 行为:

11,22,33,44 -- 66,77,44,88

输出为 4 行:

11,22,33,44 -- 11,22,33,44 -- 11,55,33,44 -- 11,55,33,44

更新:

但输出应该是:

11,22,33,44 -- 11,55,33,44 -- 66,77,44,88

我觉得我需要 UNION + JOIN + GROUP BY 组合,但无法提出正确的组合/查询。

4

1 回答 1

0
SELECT s1.* FROM 
(SELECT a,b,c,d FROM table1) s1
LEFT JOIN
(SELECT a,b,c,d FROM table2) s2
ON s1.a = s2.a AND s1.b = s2.b

更新:

SELECT a,b,c,d FROM table1 GROUP BY a,b,c,d
UNION
SELECT a,b,c,d FROM table2 GROUP BY a,b,c,d
于 2013-05-08T11:08:58.007 回答