我有两个表。
表A将引用id(id_ref(int保持为PK.
表B通过在字段中保留许多id_ref作为文本来存储更改的历史。示例:此文本字段中的1,2,3
如何直接使用select*从A中选择,其中id_ref IN(从表B中选择id_ref(?
查询示例如下:
SELECT名称从TABLE_Aid_ref IN(选择id_ref来自表格_B,其中id=4097);
我可以在PHP中使用函数explode((来分割并获得单个值。但是有没有什么方法可以直接查询而不使用split函数。
子查询:
SELECT id_ref FROM TABLE_B WHERE id=4097
返回一个字符串,该字符串是一个逗号分隔的整数列表,不能与运算符IN
一起使用
您需要函数FIND_IN_SET()
:
SELECT name
FROM TABLE_A
WHERE FIND_IN_SET(id_ref, (SELECT id_ref FROM TABLE_B WHERE id = 4097));
或:
SELECT a.name
FROM TABLE_A a INNER JOIN TABLE_B b
ON FIND_IN_SET(a.id_ref, b.id_ref)
WHERE b.id = 4097;