Sql 如何使用返回2列的子查询执行IN?

Sql 如何使用返回2列的子查询执行IN?,sql,Sql,我有这个疑问 SELECT * FROM GUITARS.FENDER WHERE FENDER.GUITARTYPE IN ( SELECT GUITARTYPE,GUITARSUBTYPE FROM GUITARS.GUITAR_TYPE WHERE GuitarColor = 'RED') 当我只在子查询中执行GUITARTYPE,而不是同时执行GUITARTYPE和GUITARSUBTYPE时,我可以让它运行。不要在中使用,使用存在: SELECT * FROM GUITARS.FEN

我有这个疑问

SELECT *
FROM GUITARS.FENDER
WHERE FENDER.GUITARTYPE IN (
SELECT GUITARTYPE,GUITARSUBTYPE
FROM GUITARS.GUITAR_TYPE
WHERE GuitarColor = 'RED')

当我只在子查询中执行GUITARTYPE,而不是同时执行GUITARTYPE和GUITARSUBTYPE时,我可以让它运行。

不要在中使用
,使用
存在

SELECT *
FROM GUITARS.FENDER
WHERE EXISTS (SELECT 1
              FROM GUITARS.GUITAR_TYPE
              WHERE GuitarColor = 'RED' AND
                    FENDER.GUITARTYPE = GUITARTYPE.GUITARTYPE AND
                    FENDER.GUITARSUBTYPE = GUITARTYPE.GUITARSUBTYPE
             );