选择值不为';其他表中不存在


Selecting rows where value don't exist in other table

我有两张表。一个用于主帐户,一个用于被禁帐户,我想选择主帐户中的所有成员,只选择那些没有被禁的成员。

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

查询需要1,30min才能执行和显示结果

IMHO您的查询不正确。行数非常高(你有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