选择其他表中不存在值的行

时间:2013-08-21 13:01:48

标签: php mysqli phpmyadmin

我有两张桌子。一个用于主要帐户,一个用于禁止帐户,我想选择主帐户中的所有成员,只选择那些未被禁止的成员。

SELECT Username, $field AS Output
FROM `Player_Accounts`, `Ban_List`
WHERE Ban_List.Banned_Name != Username
ORDER BY $field DESC LIMIT 0, 25;

查询需要超过1,30分钟才能执行并显示结果

1 个答案:

答案 0 :(得分:0)

恕我直言,你的查询不对。行数非常高(有130万用户?)

试试这个:

SELECT p.username
FROM Player_Accounts p
WHERE NOT EXISTS(
    SELECT 'BANNED'
    FROM Ban_List b
    WHERE b.banned_name = p.username
)

替代:

SELECT p.username
FROM Player_Accounts p
LEFT OUTER JOIN Ban_List b
ON p.username = b.banned_name
WHERE b.banned_name IS NULL