【问题标题】:how to get two different value in one row where table and column is same如何在表和列相同的一行中获得两个不同的值
【发布时间】:2018-11-30 09:25:24
【问题描述】:

我试图让发送消息的用户和接收消息的用户在每一行中都排成一行。

用户表 ==================================== userId 用户名 -------- --------- 23 姓名1 24 名称2 25 姓名3 消息表 ==================================================== msgId senderId reciverId 消息 ------- ---------- ---------- ------------- 2 24 25 等等 3 25 24 哦,真是废话 4 23 24 让我们做吧 我需要的输出 msgId 发送者接收者消息 -------- -------- ---------- --------- 2 名字 2 名字 3 等等 3 姓名 3 姓名 2 哦,真是废话 4 Name1 Name2 让我们做吧

那么oracle sql查询应该是什么

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    只需将UserTable 加入Message 表两次:

    SELECT
        m.msgId,
        u1.userName AS sender,
        u2.userName AS receiver,
        m.message
    FROM Message m
    INNER JOIN UserTable u1
        ON m.senderId = u1.userId
    INNER JOIN UserTable u2
        ON m.reciverId = u2.userId;
    

    【讨论】:

    • 是否可以仅使用 UserTable 的一个实例,例如“u1.userName AS 发送者,u1.userName AS 接收者”。然后在内部连接的ON中使用或条件! @蒂姆
    • 不,我认为这行不通(或不可取)。您需要匹配两个用户 ID,因此需要两个单独的联接。顺便说一句,如果您调整查询等,我的回答没有问题。
    猜你喜欢
    • 2019-09-17
    • 2021-10-17
    • 1970-01-01
    • 2022-12-05
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多