为什么SQL NOT IN()运算符不起作用?

时间:2016-11-20 21:43:24

标签: mysql

我有以下sql语句,我想从用户表中获取数据,其中用户ID不在另一个column_one和column_two表中。

我不知道为什么这句话会返回错误:

此版本的MariaDB尚未支持' LIMIT& IN / ALL / ANY / SOME子查询'

因此,出现此错误,我删除了LIMIT语句,现在它说:

操作数应包含1列

我可以看到SQL要我在子查询中只选择一列,但这不是我想要的。

如何使其避免所有这些错误并使用我的过滤返回有效的sql语句?

这是我尝试过的SQL代码:

SELECT u.username, u.firstname, u.lastname,u.id,u.school
        FROM users u
            WHERE u.id NOT IN(
                SELECT user_two,user_one FROM friends 
                    WHERE user_one !='8' 
                        OR user_two  !='8'
            )

1 个答案:

答案 0 :(得分:0)

逻辑上你有一个不对称的IN运算符

in子句的两部分必须包含相同数量的组件

你应该使用

SELECT u.username, u.firstname, u.lastname,u.id,u.school
    FROM users u
        WHERE u.id NOT IN( 
            SELECT  id  FROM friends 
                WHERE user_one !='8' 
                    OR user_two  !='8'
        )

SELECT u.username, u.firstname, u.lastname,u.id,u.school
    FROM users u
        WHERE (u.id1, u.id2) NOT IN( 
            SELECT  user_two,user_one  FROM friends 
                WHERE user_one !='8' 
                    OR user_two  !='8'
        )

或结果是不可预测的

相关问题