Postgresql 替换嵌套选择
如何进行如下postgreSQL查询:Postgresql 替换嵌套选择,postgresql,left-join,inner-join,right-join,Postgresql,Left Join,Inner Join,Right Join,如何进行如下postgreSQL查询: SELECT event_id, user_id FROM public."point" WHERE user_id = (SELECT id FROM public."user" WHERE email='test@gmail.com') 有JOINstatement,没有嵌套的SELECT语句。上面的工作,但我认为它不是最佳的。感谢您的回答。对于您的特殊情况,这应该可以: SELECT p.event_id, p.user_id FROM pub
SELECT event_id, user_id FROM public."point"
WHERE user_id = (SELECT id FROM public."user"
WHERE email='test@gmail.com')
有JOINstatement,没有嵌套的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';
通常,在连接和加入之间切换时,需要小心重复。因此,一般的解决办法是:
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在用户中可能已经是唯一的。是的,这是ti,它工作正常。用户中的id是唯一的。我没有在查询的最后一部分添加与WHERE的电子邮件比较。。。在p.user_id=u.id上,其中u.email=test@gmail.com'. 非常感谢你!