我有两个表用户和事件。 要编写的查询是查找已组织事件的用户的名称
查询1 :
select user.name
from user, events
where user.id = events.organiser_id
order by user.name;
查询2 :
select name
from user
where id in(select organiser_id from events)
order by name;
为什么" 查询2 "工作正常,但" 查询1 "没有按'吨?如何决定何时使用子查询或连接?
答案 0 :(得分:1)
mysql的典型连接语法是:
select distinct user.name
from user
join events ON events.organiser_id = user.id
order by user.name;
答案 1 :(得分:0)
SELECT DISTINCT
U.Name
FROM USER U
LEFT JOIN
EVENTS E
ON U.id = E.organiser_id
WHERE E.organiser_id IS NOT NULL
ORDER BY U.Name
使用JOIN选择所有用户和相关事件,然后使用WHERE过滤以排除那些没有链接的用户(事件表中的id);如果事件表中的每个用户都有更多事件,则必须使用DISTINCT(这在T-SQL中)
答案 2 :(得分:-3)
第二个查询无效,因为列名称不匹配。你有一个说," id in(select organiser_id"。如果你这样做,它会起作用," id in(选择organiser_id作为id"