我有以下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'
)
答案 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'
)
或结果是不可预测的