日期:2014-05-17  浏览次数:20700 次

SQL 怎么查询两个表中不相同的数据


A表

名称        容量     价格
百事可乐    250ml     1.5
可口可乐    250ml     1.6  
雪碧        250ml     1.3  
百事可乐    1L         4.5
怡宝        350ML     1
·······

B表

名称        容量     价格
百事可乐    250ml     1.5
可口可乐    250ml     1.6  
芬达        250ml     1.3  
百事可乐    1.5L      5.0
雪碧        250ml     1.3
·······

表出两个表名称和量不相同的数据

结果是
怡宝        350ML     1
芬达        250ml     1.3  
百事可乐    1.5L      5.0
·······

------解决方案--------------------
select distinct *
from (select * from A union all select * from B) T

------解决方案--------------------
SELECT *
FROM A
WHERE NOT EXISTS(SELECT 1 FROM B where A.名称=b.名称 AND A.容量=B.容量)
UNION ALL
SELECT *
FROM B
WHERE NOT EXISTS(SELECT 1 FROM A where A.名称=b.名称 AND A.容量=B.容量)

/*
名称 容量 价格
百事可乐 1L 4.5
怡宝 350ML 1.0
芬达 250ml 1.3
百事可乐 1.5L 5.0*/