0

为什么 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
4

2 回答 2

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那么您需要再次加入它或在子查询中包含这些字段。

于 2012-12-05T13:53:44.527 回答
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
于 2012-12-05T13:34:26.993 回答