【问题标题】:SQL joining based on CASE result基于 CASE 结果的 SQL 连接
【发布时间】:2013-07-15 19:27:54
【问题描述】:

我正在使用以下 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

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

【问题讨论】:

    标签: sql join case


    【解决方案1】:

    您在 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
    

    【讨论】:

      猜你喜欢
      • 2018-10-29
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多