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

求助,查出表1没在表2的数据
--建表
CREATE TABLE temp1(p_id VARCHAR(10),p_a VARCHAR(10),p_b VARCHAR(10),p_qty DECIMAL(18,6))
CREATE TABLE temp2(p_id VARCHAR(10),p_a VARCHAR(10),p_b VARCHAR(10),p_qty2 DECIMAL(18,6))

--TEMP1表给值
INSERT temp1(p_id,p_a,p_b) VALUES('A01','无','无')
INSERT temp1(p_id,p_a,p_b) VALUES('A01','红','无')   --这值没在表2
INSERT temp1(p_id,p_a,p_b) VALUES('A02','无','无')
INSERT temp1(p_id,p_a,p_b) VALUES('A02','黑','无')   --这值没在表2
--TEMP2表给值
INSERT temp2(p_id,p_a,p_b) VALUES('A01','无','无')
INSERT temp2(p_id,p_a,p_b) VALUES('A01','无','01')
INSERT temp2(p_id,p_a,p_b) VALUES('A01','无','02')
INSERT temp2(p_id,p_a,p_b) VALUES('A02','无','无')
INSERT temp2(p_id,p_a,p_b) VALUES('A02','无','01')
INSERT temp2(p_id,p_a,p_b) VALUES('A02','无','02')

我要的结果是: (即表1对应p_id,p_a,p_b 没有在表2存在的)
A01  红  无
A02  黑  无

通过后,马上结帐

------解决方案--------------------
select * from temp2 EXCEPT select * from temp1
------解决方案--------------------
2000的确没有except,一般是用exists来实现:


SELECT *
FROM temp1 a
WHERE NOT EXISTS (SELECT 1 FROM temp2 b WHERE a.p_id=b.p_id AND a.p_a=b.p_a AND a.p_b=b.p_b 
)