首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找sql以在没有使用not exists的情况下查找数据库中没有特定行的人员列表

查找sql以在没有使用not exists的情况下查找数据库中没有特定行的人员列表
EN

Stack Overflow用户
提问于 2010-02-24 01:22:04
回答 3查看 218关注 0票数 1

很容易找到所有trait.color = "green“的用户id,但我需要找到所有不存在的用户id。最明显的方法是对所有不存在的id进行分选(select id where trait.color =”green“),但我想知道是否有一种方法可以不用分选。有没有什么我不知道的技巧?

sybase 12.5没有外键,但表是一对多关系。想象一下一个简单的

代码语言:javascript
复制
ID   trait
--   -----
1    yellow
1    green
1    blue
2    yellow
2    blue
2    black
3    yellow
3    green
3    black
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-24 01:26:58

NOT EXISTS在SQL Server上效率最高...就这么做吧:-)

代码语言:javascript
复制
...MyTable M where not exists (
   select id FROM trait T where T.color = 'green' AND T.key = M.key)
票数 4
EN

Stack Overflow用户

发布于 2010-02-24 01:27:43

如果用户表与特征表具有一对多的关系,那么NOT EXISTS很可能是您的最佳答案。

您还可以尝试使用左连接和trait.userid = NULL的distinct子句

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2010-02-24 01:24:46

在trait.color <>“绿色”的地方加入UserID?

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2320219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档