Gae*_*cki 4 mysql sql subquery group-concat
我在 mysql 查询中使用“ GROUP_CONCAT ”函数和“ NOT IN ”语句。但由于未知原因,它没有返回正确的值:
这是我的查询不起作用:
select firstname, lastname
from t_user
where (status_Id NOT IN(Select GROUP_CONCAT(id) from t_status where code = 'ACT'
or code = 'WACT'))
Returns 46 rows
Run Code Online (Sandbox Code Playgroud)
这是我的查询工作:
select firstname, lastname
from t_user
where (status_Id NOT IN(1,4))
Returns 397 rows
Run Code Online (Sandbox Code Playgroud)
GROUP_CONCAT子查询的结果
(Select GROUP_CONCAT(id) from t_status where code = 'ACT' or code = 'WACT') = 1,4.
Run Code Online (Sandbox Code Playgroud)
该查询似乎只处理 GROUP_CONCAT 子查询返回的第一项。
所以我不明白发生了什么事,也不明白为什么在这两种情况下我没有得到相同的结果。
预先感谢盖尔
在这种情况下,您不需要使用GROUP_CONCAT函数,因为它返回一个字符串值。AND与and1, 4非常不同。14
select firstname, lastname
from t_user
where status_Id NOT IN
( Select id
from t_status
where code = 'ACT' or code = 'WACT'
)
Run Code Online (Sandbox Code Playgroud)
正确查询的更好方法是使用LEFT JOIN,
SELECT a.firstname, a.lastname
FROM t_user a
LEFT JOIN t_status b
ON a.t_status = b.id AND
b.code IN ('ACT', 'WACT')
WHERE b.id IS NULL
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5653 次 |
| 最近记录: |