为什么sm.status_id和sm.user_id会出现未知列错误?我通常不会将JOIN
关键字用于表连接。
...
FROM questions q, connections sm
JOIN users u ON q.user_id = u.id
JOIN users lu ON q.last_user = lu.id
JOIN (SELECT q2.id FROM questions q2 WHERE q2.status_id = sm.status_id LIMIT 2) x ON x.id = q.id
WHERE sm.user_id = 38
GROUP BY th.id
答案 0 :(得分:2)
您当前的查询存在一些问题。
首先,您正在混合JOIN
语法。您有两个以逗号分隔的值,然后以ON
条件加入。
其次,您正在尝试访问内部子查询中无法执行的表的别名。
我的建议是尝试这样的事情:
FROM questions q
JOIN users u
ON q.user_id = u.id
JOIN users lu
ON q.last_user = lu.id
JOIN
(
SELECT q2.id
FROM questions q2
JOIN connections sm
ON q2.status_id = sm.status_id
WHERE sm.user_id = 38
LIMIT 2
) x ON x.id = q.id
GROUP BY th.id
您没有发布SELECT
列表,但如果您想在connections
列表中添加select
表格中的字段,则需要再次加入该字段或包含字段在子查询中。
答案 1 :(得分:0)
原因是::您需要在select子句中使用这些列,使其在子查询中可见,如:
Select status_id ,sm.user_id
FROM questions q, connections sm
JOIN users u ON q.user_id = u.id
JOIN users lu ON q.last_user = lu.id
JOIN (SELECT q2.id FROM questions q2 WHERE q2.status_id = sm.status_id LIMIT 2) x ON x.id = q.id
WHERE sm.user_id = 38
GROUP BY th.id