我在子查询中遇到了一个相关性问题。
我有两个表:
- table1:包含"groups",每个group拥有一个groupid
、一个groupname
和一个categoryid
- table2:告诉我们哪些人是哪个group的成员(具有字段:userid
、groupid
)
我想要从数据库获取以下信息:
特定"category
"的所有groups,对于每个group:
- groupid
、groupname
- 随机选择4个成员
我参考了MySQL select 10 random rows from 600K rows fast文中的方法来为每个group生成4个随机成员。
如果我单独运行这个查询,它可以正常工作。
但如果我试图将我的子查询嵌入到“总查询”中:
SELECT
g.groupid, g.groupname,
(
SELECT GROUP_CONCAT(table2.userid SEPARATOR ",")
FROM table2, (
SELECT userid AS uid
FROM table2
WHERE table2.groupid = g.groupid
ORDER BY RAND( )
LIMIT 4
) tmp
WHERE table2.userid = tmp.uid
) AS randomusers
FROM table1 AS g WHERE g.categoryid = ?
我遇到了一个错误:"Unknown column 'g.groupid' in 'where clause'"
我尝试将子查询传递给 LEFT JOIN
但是我无法正确地实现,我的每次尝试都不成功。
有什么帮助吗?谢谢 :)