替换嵌套 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';
一般来说,在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
中已经是独一无二的了。
我怎样才能像这样进行 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';
一般来说,在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
中已经是独一无二的了。