如果你使用 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' 组的所有用户数据。记得根据你的实际表结构和列名进行调整。