【问题标题】:Replacing nested SELECT替换嵌套的 SELECT
【发布时间】:2017-03-10 21:26:56
【问题描述】:

如何进行这样的 postgreSQL 查询:

SELECT event_id, user_id FROM public."point" 
WHERE user_id = (SELECT id FROM public."user" 
WHERE email='test@gmail.com')

带有JOINstatement 并且没有嵌套的SELECT 语句。以上作品,但我认为这不是最佳的。感谢您的回答。

【问题讨论】:

    标签: postgresql left-join inner-join right-join


    【解决方案1】:

    对于您的特定情况,这应该有效:

    SELECT p.event_id, p.user_id
    FROM public."point" p JOIN
         public."user" u
         ON p.user_id = u.id 
    WHERE u.email = 'test@gmail.com';
    

    一般情况下,在JOININ 之间切换时,需要注意重复。所以一般的解决方案是:

    SELECT p.event_id, p.user_id
    FROM public."point" p JOIN
         (SELECT DISTINCT u.id
          FROM public."user" u
          WHERE u.email = 'test@gmail.com'
         ) u
         ON p.user_id = u.id ;
    

    id 可能在user 中已经是唯一的了。

    【讨论】:

    • 是的,这是 ti,它工作正常。 user 中的 id 是独一无二的。我没有在查询的最后部分添加emailWHERE 的比较。 (...ON p.user_id = u.id WHERE u.email = 'test@gmail.com')。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 2018-08-16
    • 2021-12-24
    • 2019-01-24
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多