替换嵌套 SELECT

Replacing nested SELECT

我怎样才能像这样进行 postgreSQL 查询:

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

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

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

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 中已经是独一无二的了。