0

我正在使用以下 SQL 查询..

    SELECT *,
CASE
WHEN messages.from_user_id = '$user_id' THEN messages.to_user_id
WHEN messages.from_user_id != '$user_id' THEN messages.from_user_id
END as from_user_id
 FROM messages JOIN users ON from_user_id=users.id

但是,我如何from_user_id在 JOIN 语句中使用 to 。它似乎不起作用。

4

1 回答 1

4

您在 CASE 表达式中命名的别名不可用于 JOIN。如果要在 JOIN 中使用别名,则可以将 CASE 包装在子查询中:

select *
from
(
    SELECT *,
        CASE
        WHEN messages.from_user_id = '$user_id' THEN messages.to_user_id
        WHEN messages.from_user_id != '$user_id' THEN messages.from_user_id
        END as from_user_id
    FROM messages 
) m
JOIN users 
  ON m.from_user_id=users.id
于 2013-07-15T19:30:11.857 回答