如何使用不同的值从表中选择一个值两次

时间:2012-09-23 13:33:58

标签: sql database sql-server-2005 stored-procedures

我有Message表,其中存在“senderid”和“receiverid”。 我有User表,其中找到每个用户的用户名。

现在我想制作一个存储过程,在其中我选择用户名为userid = usernameid的用户名和userid = receivername的用户名。

我试过这个,但这是错的,因为我之前从未做过这样的事情。

SELECT       SystemUser.SU_Username Where SystemUser.SU_ID=MessageReciever As RecieverName, SystemUser.SU_Username where Message.SenderID = SystemUser.SU_ID As SenderName FROM            Message CROSS JOIN
                     SystemUser

有没有办法做我想做的事?

3 个答案:

答案 0 :(得分:6)

从SystemUser表中选择两次,使用表别名:

SELECT       SUR.SU_Username  As RecieverName
           , SUS.SU_Username As SenderName 
FROM            Message 
               JOIN SystemUser SUR
                  on (SUR.SU_ID = Message.MessageReciever )
               JOIN SystemUser SUS
                  on (SUS.SU_ID = Message.SenderID )

答案 1 :(得分:1)

看了你的SQL很长一段时间后,我想我想你想做什么: 加入两次

select  r.SU_Username as RecieverName,
        s.SU_Username as SenderName
from    Message m
inner join SystemUser r on (r.SU_ID = m.MessageReciever)
inner join SystemUser s on (s.SU_ID = m.SenderID)

答案 2 :(得分:1)

给出类似的东西:

create table users ( name text, id integer );
create table messages ( receiver_id integer, sender_id integer );

你要找的是:

select us.name as sender_name, ur.name as receiver_name
from users us, users ur, messages m
where us.id = m.sender_id and ur.id = m.receiver_id;