KING 博主等级

一帆风顺 ⛵️⛵️⛵️

GROUP_CONCAT 与IN连用,只查询出了第一条数据

钟晓川
2023-06-12 / 6 点赞 / 452 阅读

如果你使用 GROUP_CONCAT 函数与 IN 运算符连用时只查询到了第一条数据,可能是因为子查询返回的字符串包含了逗号(,),而 IN 运算符默认会将字符串以逗号为分隔符解析为多个值,从而只匹配第一个值。

为了解决这个问题,你可以使用 FIND_IN_SET 函数来代替 IN 运算符,它可以处理包含逗号的字符串列表。以下是修正后的示例:

SELECT *
FROM users
WHERE FIND_IN_SET(user_id, (
  SELECT GROUP_CONCAT(user_id)
  FROM groups
  WHERE group_name = 'Admins'
)) > 0;

在上述示例中,FIND_IN_SET 函数用于检查 user_id 是否在子查询返回的逗号分隔的字符串列表中,而不是将整个字符串作为单个值进行匹配。

这样修改后,你应该能够正确地查询到属于 'Admins' 组的所有用户数据。记得根据你的实际表结构和列名进行调整。

6