1

我有看起来像这样的表:

create table users (
    user_id uuid,
    user_name varchar(32)
);

create table messages (
    message_id uuid,
    from_id uuid references users(user_id),
    to_id uuid references users(user_id),
    the_message varchar(140),
    primary key(message_id)
);

如果我执行以下操作:

select * from messages

我将获得 UUID。我想显示给定 uuid 的 users.user_name。这让我很接近:

select
    users.user_name as from_id,
    users.user_name as to_id
from messages
    join users on users.user_id = messages.from_id
;

结果显示“发件人”和“收件人”字段的用户相同。

如何显示 from_id 的 user_name 以及 to_id 的 user_name?

4

1 回答 1

3

您需要JOIN两次访问 users 表——一次用于 from 用户,一次用于 to 用户:

select
    messages.*,
    f.user_name as from_id,
    t.user_name as to_id
from messages
    join users f on f.user_id = messages.from_id
    join users t on t.user_id = messages.to_id
;
于 2013-02-16T02:54:58.757 回答