我有如下两张表,
表 1:
ID NAME
------ --------
IM-1 Pencil
IM-2 Pen
IM-3 NoteBook
IM-4 Eraser
表 2:
ID ITEM_ID
------ --------------
MT-1 IM-1
MT-2 IM-1,IM-2,IM-3
MT-3 IM-1,IM-2,IM-4
要求的结果是:
ID ITEMNAME
------ --------
MT-1 Pencil
MT-2 Pencil,Pen,NoteBook
MT-3 Pencil,Pen,Eraser
但是通过使用查询
SELECT T2.ID,
(SELECT T1.NAME
FROM TABLE1 AS T1
WHERE T1.ID IN (T2.ITEM_ID)) AS ITEMNAME
FROM TABLE2 AS T2
我得到结果:
ID ITEMNAME
------ --------
MT-1 Pencil
MT-2 (NULL)
MT-3 (NULL)
谁能帮帮我?
最佳答案
如果不规范化,你可以试试这个。但是这个查询不会是 SARGable,并且作为 ypercube pointed out在数据库中存储逗号分隔列表 is a bad idea .
SELECT T2.ID,
GROUP_CONCAT(T1.NAME SEPARATOR ',')
FROM TABLE2 AS T2
INNER JOIN TABLE2 AS T1
ON FIND_IN_SET (T1.ID , T2.ITEM_ID )
GROUP BY
T2.ID
关于mysql - 如何在子查询中使用 in 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082139/