首页 > 解决方案 > Oracle 唯一记录检索

问题描述

有以下三个表格,如下所述:

SELECT * FROM Users;

UserID    UserName
1          Ramesh
2          Suresh


SELECT * FROM UserAddress;

UserAddressID    UserID     Address   
1                  1          South St
2                  1          North St
3                  2          New St

SELECT * FROM UserDegree;

UserDegreeID      UserID      Degree
1                  1            BSC
2                  2            B.Tech
3                  2            M.Tech

我需要如下所示的输出,

UserID  UserName  UserAddressID   UserID   Address  UserDegreeID  UserID  Degree
1        Ramesh     1               1     South St    1            1       BSC
NULL      NULL      2               1     North St    NULL         NULL    NULL
2        Suresh     3               2     New St      2            2      B.Tech
NULL      NULL      NULL           NULL   NULL        3            2      M.Tech

谁能帮助我在不使用任何循环的情况下获得此输出?

标签: oracle

解决方案


这是连接到所有三个表的 SQL,希望能解决您的问题。

select  u.userid,
    u.username,
    a.useraddressid,
    a.userid as userid2,
    a.address,
    d.userdegreeid,
    d.userid as userid3,
    d.degree
from users u
     join useraddress a on (u.userid = a.userid)
     join userdegree d on (u.userid = d.userid);

在这里,在“UserID”字段上加入SQL,因此不需要从所有表中选择“userid”,它将相同的记录。所以,无论你想在哪里使用这个“userid”,你都可以在应用程序中引用相同的“userid”。在下面的 SQL 中,我删除了重复的“userid”。

select  u.userid,
    u.username,
    a.useraddressid,
    a.address,
    d.userdegreeid,
    d.degree
from users u
     join useraddress a on (u.userid = a.userid)
     join userdegree d on (u.userid = d.userid);

推荐阅读