我有两张桌子如下所示
Table1:
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)
有人能帮我吗?
发布于 2012-01-31 15:44:08
试试这个:
SELECT b.ID,
GROUP_CONCAT(a.Name) as ItemName
FROM Table2 b INNER JOIN Table1 a
ON FIND_IN_SET(a.name, b.Item_ID)
GROUP BY b.ID
发布于 2012-01-31 15:42:13
如果没有正常化,你可以试试这个。但是这个查询不是SARGable,而是ypercube pointed out在db 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
发布于 2012-01-31 15:34:05
SELECT T2.ID, T1.NAME as ITEMNAME
FROM TABLE2 AS T2 LEFT JOIN TABLE1 AS T1 ON
FIND_IN_SET(T1.ID,T2.ITEM_ID)>0 AND FIND_IN_SET(T1.ID,T2.ITEM_ID) IS NOT null;
https://stackoverflow.com/questions/9082139
复制相似问题