很容易找到所有trait.color = "green“的用户id,但我需要找到所有不存在的用户id。最明显的方法是对所有不存在的id进行分选(select id where trait.color =”green“),但我想知道是否有一种方法可以不用分选。有没有什么我不知道的技巧?
sybase 12.5没有外键,但表是一对多关系。想象一下一个简单的
ID trait
-- -----
1 yellow
1 green
1 blue
2 yellow
2 blue
2 black
3 yellow
3 green
3 black发布于 2010-02-24 01:26:58
NOT EXISTS在SQL Server上效率最高...就这么做吧:-)
...MyTable M where not exists (
select id FROM trait T where T.color = 'green' AND T.key = M.key)发布于 2010-02-24 01:27:43
如果用户表与特征表具有一对多的关系,那么NOT EXISTS很可能是您的最佳答案。
您还可以尝试使用左连接和trait.userid = NULL的distinct子句
SELECT Distinct Users.UserId
FROM USERS
LEFT JOIN (SELECT * FROM Traits Where Color = 'GREEN') GreenTraits
ON Users.UserId = GreenTraits.UserId
WHERE 1=1
AND GreenTraits.UserId = NULL发布于 2010-02-24 01:24:46
在trait.color <>“绿色”的地方加入UserID?
https://stackoverflow.com/questions/2320219
复制相似问题