Php MySQL的基本问题:如何从一个表中获取不在另一个表中的行?
我有一个用户名列表,在我的用户表中有一个名为username+other info的列 在较小的recentusers表中,我还有另一个用户名列表,其中有一列名为username 如何创建一个mysql查询来获取users表中但不在recentusers表中的所有用户名 我知道这可能很简单,但任何帮助都将不胜感激Php MySQL的基本问题:如何从一个表中获取不在另一个表中的行?,php,mysql,Php,Mysql,我有一个用户名列表,在我的用户表中有一个名为username+other info的列 在较小的recentusers表中,我还有另一个用户名列表,其中有一列名为username 如何创建一个mysql查询来获取users表中但不在recentusers表中的所有用户名 我知道这可能很简单,但任何帮助都将不胜感激 select username from users where username not in (select username from recentusers) 然后在第一个用
select username from users where username not in (select username from recentusers)
然后在第一个用户名之后添加您想要选择的其他信息
正如OMG Ponies所指出的,这个查询的运行速度与使用
然后在第一个用户名之后添加您想要选择的其他信息
正如OMG Ponies所指出的,此查询的运行速度与使用NOT IN关键字的速度一样快。NOT IN关键字应该很有帮助:
SELECT username
FROM users
WHERE username NOT IN (
SELECT username
FROM recentusers
)
NOT IN关键字应该有帮助:
SELECT username
FROM users
WHERE username NOT IN (
SELECT username
FROM recentusers
)
连接应该比子查询快,尽管我不知道mysql是否支持这一点
select * from users
left outer join recentusers
on users.key = recentusers.key
连接应该比子查询快,尽管我不知道mysql是否支持这一点
select * from users
left outer join recentusers
on users.key = recentusers.key
您还可以使用执行速度比子查询快的左联接:
SELECT
users.username
FROM
users LEFT JOIN recentusers
ON users.username = recentusers.username
WHERE
recenterusers.username is null
您还可以使用执行速度比子查询快的左联接:
SELECT
users.username
FROM
users LEFT JOIN recentusers
ON users.username = recentusers.username
WHERE
recenterusers.username is null
仅供参考:这将与使用LEFT-JOIN/IS-NULL:@OMG-Ponies:极好的信息的查询运行速度一样快。我不知道。谢谢你指出。仅供参考:这将与使用LEFT JOIN/IS NULL:@OMG Ponies:极好的信息的查询一样快。我不知道。感谢您指出这一点。关于MySQL,这是不正确的,并且您的查询没有列出不在recentusers表中的用户:查询是正确的,关于标准SQL语法,请注意outer关键字。第二,我写到我不知道MySql是否支持这种语法,因为MySql自己做饭。@BeowulfOF:查询是错误的,因为您忘记添加recentusers.key是null关于MySql是错误的,您的查询没有列出不在recentusers表中的用户:关于标准SQL语法,查询是正确的,注意外部关键字。其次,我写到我不知道MySql是否支持这种语法,因为MySql自己做饭。@BeowulfOF:查询是错误的,因为您忘记添加recentusers.key为NULL