--建表
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
)