如何在引用文本'IN'使用WHERE条件进行选择?



我有两个表。

表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;

最新更新