我有一个MySQL查询,其中我想包括来自另一个表的ID列表。在网站上,人们可以添加某些项目,然后人们可以将这些项目添加到他们的收藏夹。我基本上想得到ID的人谁拥有该项目(这是一个有点简化,但这是它归结为)的列表。
基本上,我做这样的事情:
SELECT *,
GROUP_CONCAT((SELECT userid FROM favourites WHERE itemid = items.id) SEPARATOR ',') AS idlist
FROM items
WHERE id = $someid
这样,我将能够显示谁鼓励了一些项目,通过分裂idlist以后在PHP中的数组进一步在我的代码,但我得到以下MySQL错误:
1242 – Subquery returns more than 1 row
我认为这是一个点使用GROUP_CONCAT而不是,例如,CONCAT?我这个错误的方式吗?
好的,感谢答案到目前为止,这似乎工作。但是,有一个catch。如果该用户添加的项目也被视为收藏。所以我需要一个额外的检查,以检查如果creator = userid。有人可以帮我提出一个聪明(和希望有效的)方式做到这一点吗?
谢谢!
编辑:我只是试图这样做:
SELECT [...] LEFT JOIN favourites ON (userid = itemid OR creator = userid)
idlist为空。注意,如果我使用INNER JOIN而不是LEFT JOIN,我得到一个空结果。即使我确定有行满足ON要求。