如何组合这两个MySQL查询?

时间:2012-05-30 20:38:28

标签: mysql query-optimization

我正在制作一个爱好计划,并认为有更好的方法可以做到这一点。我所拥有的是这个查询:

SELECT username
FROM users

返回所有可能的匹配项。 然后我运行此查询:

SELECT username
FROM alreadyDone
WHERE Name='test'

这让我得到了我们已经完成的比赛。然后我将这些全部添加到Java中的arraylists中,然后通过集合接口删除相同的那些。

我认为有一种方法可以通过MySQL完成所有这些,并且玩各种连接等等,我无法弄清楚要走哪条路。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您正试图找到那些不在“测试”的已完成表中的用户。

SELECT u.username
    FROM users u
    WHERE NOT EXISTS(SELECT 1
                         FROM alreadyDone ad
                         WHERE ad.username = u.username
                             AND Name = 'test');

或者,您也可以将其写为:

SELECT u.username
    FROM users u
        LEFT JOIN alreadyDone ad
            ON u.username = ad.username
                AND Name = 'test'
    WHERE ad.username IS NULL;