gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:09:06 25 4
gpt4 key购买 nike

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

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

这个版本的 MariaDB 还不支持 'LIMIT & IN/ALL/ANY/SOME subquery'

因此,对于这个错误,我删除了 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'
)

最佳答案

从逻辑上讲,您对 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'
)

或者结果是不可预测的

关于mysql - 为什么 SQL NOT IN() 运算符不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40709730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com