帮我写一个MySQL的sql,需要先查一张表的一个字段,得到多行用逗号分隔id的字符串,这些字符串有的存放了一个id,有的存放了多个id,拿着这些字符串查另外一张表中符合的id数据
时间: 2024-05-15 10:16:20 浏览: 50
sql里将重复行数据合并为一行数据使用逗号进行分隔
假设第一张表名为table1,查询的字段名为column1;第二张表名为table2,查询的字段名为column2,可以使用如下的SQL语句:
```
SELECT column2 FROM table2 WHERE FIND_IN_SET(column2, (SELECT GROUP_CONCAT(column1) FROM table1)) > 0;
```
解释一下:
1. `SELECT GROUP_CONCAT(column1) FROM table1`:查询table1中column1字段的值,并使用GROUP_CONCAT函数将多条记录的值用逗号连接成一个字符串。
2. `FIND_IN_SET(column2, ...)`:使用FIND_IN_SET函数查找table2中的column2字段值是否在第一步查询出的字符串中存在。
3. `> 0`:如果存在,则返回非零值,表示符合条件,否则返回0,表示不符合条件。
4. 最终的查询结果是table2中所有符合条件的记录的column2字段值。
阅读全文