1

我正在开发一个爱好计划,并认为有更好的方法来做到这一点。我在这里有这个查询:

SELECT username
FROM users

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

SELECT username
FROM alreadyDone
WHERE Name='test'

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

我认为有一种方法可以通过 MySQL 完成这一切,并且玩弄各种连接等,我不知道该走哪条路。有人可以指出我正确的方向吗?

4

1 回答 1

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;
于 2012-05-30T20:42:22.833 回答