加入两个选择具有where子句的查询

时间:2012-10-09 10:25:48

标签: sql oracle11g

SELECT JIVE_USER_ID,
       EMAIL_ID, 
       USER_ID 
FROM VIK_USER WHERE EMAIL_ID='user@example.com';

结果是

JIVE_USER_ID    EMAIL_ID              USER_ID
11222            user@example.com     User

另一个问题是

SELECT  VIK_USER_PROFILE.FIRST_NAME,
        VIK_USER_PROFILE.LAST_NAME,
        VIK_USER.EMAIL_ID 
FROM VIK_USER,VIK_USER_PROFILE 
WHERE VIK_USER_PROFILE.USER_ID=VIK_USER.USER_ID;

结果是

FIRST_NAME    LAST_NAME     EMAIL_ID
Ray            User        user@exmaple.com

我想使用单个块语句获取结果。如何将这两个select语句合并为一个。

谢谢。

2 个答案:

答案 0 :(得分:3)

select VIK_USER.JIVE_USER_ID,
       VIK_USER.EMAIL_ID, 
       VIK_USER.USER_ID,
       VIK_USER_PROFILE.FIRST_NAME,
       VIK_USER_PROFILE.LAST_NAME,
       VIK_USER.EMAIL_ID
from VIK_USER, VIK_USER_PROFILE
where VIK_USER_PROFILE.USER_ID=VIK_USER.USER_ID
and VIK_USER.EMAIL_ID='user@example.com'

详细说明,VIK_USER和VIK_USER_PROFILE位于INNER JOIN中(逗号只是一个快捷方式)。

加入条件为VIK_USER_PROFILE.USER_ID=VIK_USER.USER_ID。 JOIN具有连接条件,通常在两个表中共享相同值的列上。

或者,完全相同的查询可以这样写:

select *
from VIK_USER
inner join VIK_USER_PROFILE on VIK_USER_PROFILE.USER_ID=VIK_USER.USER_ID
where VIK_USER.EMAIL_ID='user@example.com';

答案 1 :(得分:0)

上面的答案根据where和where子句加入表和过滤器。 对于大表来说,这可能效率低下。 而是过滤表格中的特定ID,然后加入。