CREATE TABLE Table1
(
[userid] [int] NULL,
[username] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]CREATE TABLE Table2
[user1] [int] NULL,
[user2] [int] NULL
) ON [PRIMARY]其中Table2中的user1 和user2字段都是以Table1中的userid为外键 
我如何用一条sql语句查询返回 Table2中字段user1和user2对应的username呢? 而不是返回userid

解决方案 »

  1.   

    select 
        (select username from Table1 where userid=a.user1) ,
        (select username from Table1 where userid=a.user2) 
    from 
        Table2 a
      

  2.   

    select
        b.username,c.username
    from 
        Table2 a
    left join
        Table1 b
    on
        a.user1=b.userid
    left join
        Table1 c
    on
        a.user2=c.userid
      

  3.   

    select
        max(case a.user1 when b.userid then b.username end),
        max(case a.user2 when b.userid then b.username end)
    from
        table2 a,table1 b
    group by
        a.user1,a.user2
      

  4.   

    CREATE TABLE Table1
    (
    [userid] [int] NULL,
    [username] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]CREATE TABLE Table2(
    [user1] [int] NULL,
    [user2] [int] NULL
    ) ON [PRIMARY]insert into table1 
    Select 1,'01'
    union all select 2,'02'insert into table2 
    Select 1,2
    select b.username,c.username
      from table2 a,table1 b,table1 c
     where a.user1 = b.userid and 
           a.user2 = c.useriddrop table table1
    drop table table2
      

  5.   

    SELECT User1=(SELECT UserName FROM table1 WHERE userID=user1),
    User2=(SELECT UserName FROM table1 WHERE userID=user2) FROM table2

    SELECT x.UserName User1,y.UserName User2
    FROM Table2 a
    INNER JOIN Table1 x
    ON x.UserID=a.User1
    INNER JOIN Table1 y
    ON y.UserID=a.User2