MySQL在子查询中选择检索一条或多条数据记录作为一组

标签 mysql

假设有 2 个这样的表:

> [persons]                 [groups]
> id | name                id | member
> ---+-------              ---+-------
> 1  | anna                1  | 1,3,4
> 2  | jake                2  | 2,4,5
> 3  | jhon                3  | 1,2,3
> 4  | jessica             4  | 4,5
> 5  | albert              5  | 1,6,7

我尝试使用获取组 ID 2 和 3 的成员

select id,name from persons 
               where id in (select member from groups where id in (2,3));

但只返回一条记录(id=2)。有什么建议吗?

最佳答案

不确定您的目标是什么,但这只是我的猜测:

http://sqlfiddle.com/#!9/f6942/3

SELECT DISTINCT persons.id, persons.name
FROM persons
INNER JOIN groups
ON  FIND_IN_SET(persons.id,groups.member)>0
   AND groups.id IN (2,3)

我同意@hyades 的观点,你应该更好地重新设计你的数据库。

关于MySQL在子查询中选择检索一条或多条数据记录作为一组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29736605/

相关文章:

mysql - 在 SQL 中反转字符串

mysql - 每位客户当天的倒数第五笔交易

mysql - 如何添加一对多可以为空的FK

PHP 查询结果存入变量

mysql - 无法从字节数组打开电子邮件附件

导出后Mysql数据库表为空

php - 比较 MYSQL 密码与 HTML 表单密码

Mysql 查询卡在生产数据库服务器上,但在本地工作正常

SQL 查询还是子查询?

php - 3 计算字段中唯一值的实例