基本的MySQL问题:如何从一个表中获取不在另一个表中的行?

时间:2009-11-23 20:40:58

标签: php mysql

我的“用户”表中有一个用户名列表(名为“用户名”)+其他信息。

我的小“recentusers”表中还有另一个用户名列表(名为“username”的列)。

如何创建mysql查询以获取“users”表中但不在“recentusers”表中的所有用户名?

我知道这可能很简单,但任何帮助都会受到赞赏!

5 个答案:

答案 0 :(得分:4)

select username from users where username not in (select username from recentusers)

然后在第一个用户名后添加您要选择的其他信息。

正如OMG Ponies所指出的,此查询的运行速度与使用Left Join or Is null.

一样快

答案 1 :(得分:2)

NOT IN关键字应该有用:

SELECT username
FROM users
WHERE username NOT IN (
    SELECT username
    FROM recentusers
)

答案 2 :(得分:1)

SELECT * FROM users
    LEFT JOIN recentusers USING (username) 
    WHERE recentusers.username IS NULL;

答案 3 :(得分:1)

您还可以使用左连接(其执行速度比子查询快):

SELECT
    users.username
FROM
    users LEFT JOIN recentusers
        ON users.username = recentusers.username
WHERE
    recenterusers.username is null

答案 4 :(得分:0)

连接应该比子查询更快,但我真的不知道mysql是否支持这个。

select * from users
left outer join recentusers
on users.key = recentusers.key