我有一个关于为这个问题制作一个好的子查询的问题
假设我们有一个表用户和链接。
users
+++++++++
id name
1 name1
2 name2
3 name3
+++++++++
links
+++++++++
id link
1 link1
2 link1
3 link1
+++++++++
让我说我有这样的关系表
name_links
++++++++++++
uid lid
1 1,3
2 1,2,3
3 2
++++++++++++
我知道这不是最常用的方法。我发布了关于这种方法的建议的另一个问题。如果您有任何建议,请点击链接。
mysql query normal relationship table vs concatenated realtionship table
但是使用这个方案,我无法让查询工作。我提出的查询如下:
SELECT link
FROM links
WHERE links.id
IN
(
SELECT lid
FROM name_links
WHERE uid=1
)
我使用正确的语法和引号执行此操作,但我只获得一行,即第一行。因此,例如使用相同的查询,我只获得link1作为结果。我需要获取link1和link3。
这让我疯了,我真的需要一些帮助。
谢谢!
答案 0 :(得分:2)
SELECT link
FROM name_links
JOIN links
ON FIND_IN_SET(id, lid)
WHERE uid = 1
正如我在answer to your previous question中提到的那样,FIND_IN_SET
是不可原谅的。