如何制作这样的postgreSQL查询:
SELECT event_id, user_id FROM public."point"
WHERE user_id = (SELECT id FROM public."user"
WHERE email='test@gmail.com')
带有JOIN
语句且没有嵌套SELECT
语句的。以上工作,但我认为它不是最佳的。谢谢你的回答。
答案 0 :(得分: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';
通常,在JOIN
和IN
之间切换时,您需要注意重复项。所以一般的解决方案是:
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
可能已经是唯一的。