我正在制作一个爱好计划,并认为有更好的方法可以做到这一点。我所拥有的是这个查询:
SELECT username
FROM users
返回所有可能的匹配项。 然后我运行此查询:
SELECT username
FROM alreadyDone
WHERE Name='test'
这让我得到了我们已经完成的比赛。然后我将这些全部添加到Java中的arraylists中,然后通过集合接口删除相同的那些。
我认为有一种方法可以通过MySQL完成所有这些,并且玩各种连接等等,我无法弄清楚要走哪条路。有人能指出我正确的方向吗?
答案 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;