我必须编写一个MySql查询来查找按顺序排序的组织事件的用户名

时间:2017-10-04 19:31:13

标签: mysql sql

我有两个表用户事件。 要编写的查询是查找已组织事件的用户的名称

查询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 "没有按'吨?如何决定何时使用子查询或连接?

3 个答案:

答案 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"