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 關注
- 191 瀏覽
添加回答
舉報