我有一个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);
我该如何做到这一点?
答案 0 :(得分:1)
请尝试使用=
语句:
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);
答案 1 :(得分:0)
问题在于你的where子句:它目前被设计为将dropper_id与单个值进行比较,但实际上并不是你想要的。要解决此问题,请将“=”符号替换为“in”。这将告诉WHERE子句将子查询视为元组或值列表而不是单个值。