2 回答
TA贡献1735条经验 获得超5个赞
您可以使用NOT EXISTS:
SELECT * FROM date1
UNION
SELECT d2.* FROM date2 d2
WHERE NOT EXISTS (SELECT 1 FROM date1 d1 WHERE d1.id = d2.id)
如果您不想排除重复的行或者每个表中UNION ALL没有重复的行,也可以更改为,这会更有效。id
TA贡献1818条经验 获得超7个赞
使用联合并将其包装在带有聚合的主查询中可能是您想要的。
DROP TABLE IF EXISTS T,T1;
CREATE TABLE T(ID INT, COUNT1 INT);
CREATE TABLE T1(ID INT, COUNT1 INT);
INSERT INTO T VALUES (1,567),(2,20);
INSERT INTO T1 VALUES(1,565),(3,20);
select tid ,
max(case when tcount1 is not null then tcount1 else t1count1 end) cnt
from
(select id tid,count1 tcount1,null t1count1 from t
union
select id tid,null tcount1,count1 from t1
) s
group by tid;
+------+------+
| tid | cnt |
+------+------+
| 1 | 567 |
| 2 | 20 |
| 3 | 20 |
+------+------+
3 rows in set (0.001 sec)
- 2 回答
- 0 关注
- 135 浏览
添加回答
举报