我有一个SQL语句,我想返回从一个MINUS语句中发现的6个字段,该语句只比较来自2个表的1个字段。当MINUS语句只返回1个条目时,它可以正常工作,但如果返回多于1,则会出错。
SELECT DROPPER_ID, EMAIL, ACTIVE, COUNTRY_CD, FIRST_NAME, LAST_NAME FROM PETE.DROPPER
WHERE DROPPER_ID = (
SELECT DROPPER_ID FROM PETE.DROPPER WHERE COUNTRY_CD <> 'USA' AND ACTIVE = 1
MINUS
SELECT DROPPER_ID FROM PETE.DROPPER_COMPARE);
我怎样才能做到这一点?
不使用=
,尝试使用IN
语句:
SELECT DROPPER_ID, EMAIL, ACTIVE, COUNTRY_CD, FIRST_NAME, LAST_NAME FROM PETE.DROPPER
WHERE DROPPER_ID IN (
SELECT DROPPER_ID FROM PETE.DROPPER WHERE COUNTRY_CD <> 'USA' AND ACTIVE = 1
MINUS
SELECT DROPPER_ID FROM PETE.DROPPER_COMPARE);
问题是在你的where子句:它目前被设计为比较dropper_id与单个值,但这实际上不是你想要的。要解决这个问题,请将'='符号替换为'in'。这将告诉WHERE子句将子查询视为值的元组或列表,而不是单个值。