有没有更好的方法来处理这个? (Psql,使用TOAD)

时间:2016-03-25 00:51:45

标签: sql psql toad

这是通过从数据库中选择用户并删除任何不再存在的用户而传递给我的代码。现在它可以工作,但我认为可能有更好的方法来处理它。

如果有其他方法可以处理此请求,我只是得到意见。感谢您的任何意见。

    SELECT uvt.user_id, 
           ulp.user_id,
           uj.user_id,
           uw.user_id,
           pu.user_id
    FROM U_V_T uvt, 
         U_L_P ulp, 
         U_J uj,
         U_W uw,
         P_U pu 
    WHERE uvt.user_id NOT IN(SELECT user_id FROM users)
    AND ulp.user_id NOT IN(SELECT user_id FROM users)
    AND uj.user_id NOT IN(SELECT user_id FROM users)
    AND uw.user_id NOT IN(SELECT user_id FROM users)
    AND pu.user_id NOT IN(SELECT user_id FROM users)
    GROUP BY uvt.user_id,ulp.user_id, uj.user_id, uw.user_id, pu.user_id

1 个答案:

答案 0 :(得分:1)

看起来似乎是一种愚蠢的方式来解决这个问题。为什么你想要这些用户的每一个组合?

我倾向于将每个值放在单独的上并使用union all

select 'uvt' as which, user_id
from u_v_t
where user_id not in (select user_id from users)
union all
select 'ulp' as which, user_id
from u_l_p
where user_id not in (select user_id from users)
union all
select 'uj', user_id
from u_j
where user_id not in (select user_id from users)
union all
select 'uw', user_id
from u_w
where user_id not in (select user_id from users)
union all
select 'pu', user_id
from p_u
where user_id not in (select user_id from users);

这应该更快,并且具有基本相同的信息。