Mysql 操作数应包含1列错误

Mysql 操作数应包含1列错误,mysql,sql,mysql-error-1241,Mysql,Sql,Mysql Error 1241,我有以下疑问 SELECT * FROM users WHERE id NOT IN ( SELECT user_id FROM `counter` WHERE DATE_SUB( CURDATE( ) , INTERVAL 14 DAY ) <= created ) AND id IN ( SELECT user_id FROM coupon_used ) AND id IN ( SELECT user_id FROM acc

我有以下疑问

SELECT * 
FROM users
WHERE id NOT IN (
    SELECT user_id
    FROM  `counter` 
    WHERE DATE_SUB( CURDATE( ) , INTERVAL 14 DAY ) <= created
)
AND id IN (
    SELECT user_id
    FROM coupon_used
)
AND id IN (
    SELECT user_id
    FROM accounts
)
但请告诉我一个错误:

操作数应包含1列


出现此错误的原因是,在中使用
时,子查询中应返回的列数必须正好等于一。但我宁愿在
子句中使用
JOIN
over

使用联接的此的等效查询:

SELECT  DISTINCT a.userID
FROM    counter a
        INNER JOIN coupon_used b
            ON a.ID = b.user_id
        INNER JOIN accounts c
            ON a.ID = c.user_id
WHERE   b.code ='xyz' AND
        DATE_SUB(CURDATE(), INTERVAL 14 DAY ) <= created
选择不同的a.userID
从a柜台
内连接优惠券
在a.ID=b.user\u ID上
内部联接帐户c
在a.ID=c.user\u ID上
其中b.code='xyz'和

DATE_SUB(CURDATE(),INTERVAL 14 DAY)出现此错误的原因是,在
中使用
时,子查询中应返回的列数必须正好等于一。但我宁愿在
子句中使用
JOIN
over

使用联接的此的等效查询:

SELECT  DISTINCT a.userID
FROM    counter a
        INNER JOIN coupon_used b
            ON a.ID = b.user_id
        INNER JOIN accounts c
            ON a.ID = c.user_id
WHERE   b.code ='xyz' AND
        DATE_SUB(CURDATE(), INTERVAL 14 DAY ) <= created
选择不同的a.userID
从a柜台
内连接优惠券
在a.ID=b.user\u ID上
内部联接帐户c
在a.ID=c.user\u ID上
其中b.code='xyz'和

DATE_SUB(CURDATE(),INTERVAL 14 DAY)连接会更好,但是为了对您编写的内容进行最小的更改,您可以使用这样一个事实,即子查询不需要where子句中的列位于select中。i、 e.代替

id IN (
    SELECT user_id, code 
    FROM coupon_used WHERE code ='xyz'
)
你可以用

id IN (
    SELECT user_id
    FROM coupon_used WHERE code ='xyz'
)

连接会更好,但是为了对您编写的内容进行最小的更改,您可以使用这样一个事实,即子查询不需要where子句中的列位于select中。i、 e.代替

id IN (
    SELECT user_id, code 
    FROM coupon_used WHERE code ='xyz'
)
你可以用

id IN (
    SELECT user_id
    FROM coupon_used WHERE code ='xyz'
)

欢迎来到堆栈溢出。您可以使用工具栏按钮格式化源代码。这次我是为你做的。此外,如果您避免使用
JOIN
操作符系列,那么您在关系数据库领域不会走得太远。欢迎使用堆栈溢出。您可以使用工具栏按钮格式化源代码。这次我是为你做的。此外,如果您避免使用
JOIN
操作符系列,那么您在关系数据库领域不会走得太远。
in
子句从长远来看会执行得很慢。由您决定
子句中的
:D
从长远来看将执行缓慢。由您决定
:D