否定选择SQL查询
发布时间:2021-01-13 21:50:11 所属栏目:MsSql教程 来源:网络整理
导读:我的任务是从我们的sql数据库中返回一个否定的选择.我会尽可能地定义标准.到目前为止,我还没有制作出有效的查询. 业务表 [公交车名称] [公交车ID] 活动表 [活动ID] [公交车ID] 活动扩展表 [分机ID] [活动ID] [巴士ID] 我需要在关联表中没有该企业ID#记录的
我的任务是从我们的sql数据库中返回一个否定的选择.我会尽可能地定义标准.到目前为止,我还没有制作出有效的查询. 业务表 [公交车名称] [公交车ID] 活动表 [活动ID] [公交车ID] 活动扩展表 [分机ID] [活动ID] [巴士ID] 我需要在关联表中没有该企业ID#记录的所有企业的企业名称.简单地说,所有企业都没有活动.业务ID可以存在于一个或两个关联表中. 在尝试使用连接进行查询而不是在语句中存在或不存在时,这会导致我几个小时的麻烦.没有成功. 有任何想法吗? 解决方法使用NOT INSELECT b.* FROM BUSINESS b WHERE b.business_id NOT IN (SELECT a.business_id FROM ACTIVITY a) AND b.business_id NOT IN (SELECT ae.business_id FROM ACTIVITY_EXTENSION ae) 使用NOT EXISTS SELECT b.* FROM BUSINESS b WHERE NOT EXISTS (SELECT NULL FROM ACTIVITY a WHERE a.business_id = b.business_id) AND NOT EXISTS (SELECT NULL FROM ACTIVITY_EXTENSION ae WHERE ae.business_id = b.business_id) 使用LEFT JOIN / IS NULL SELECT b.* FROM BUSINESS b LEFT JOIN ACTIVITY a ON a.business_id = b.business_id LEFT JOIN ACTIVITY_EXTENSION ae ON ae.business_id = b.business_id WHERE a.business_id IS NULL AND ae.business_id IS NULL 结论 因为关系是外键(business_id),所以假设它们都不为null是安全的.在这种情况下,NOT IN和NOT EXISTS是在SQL Server中查找缺失值的最佳方法. LEFT JOIN / IS NULL效率较低 – you can read more about it in this article. (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-order-by – 如何在Doctrine 2中按计数排序?
- 企业即时通讯潜力巨大 腾讯叩门无力QQ重命名?
- SQL SERVER中如何手动增长日志文件和数据文件
- sql-server-2008-r2 – 将SQL Server 2008 R2表/数据从开发
- sql 中rand函数怎样用?sql怎样获取区间随机数?
- sql-server – 这个NO JOIN PREDICATE警告我应该感到警惕吗
- 盖茨:让Google成了搜索的代名词是我的失误
- 不看不知道:一期足彩钱可以让你买一百期足彩
- 数据库设计 – 教授告诉我们将序列化的Java对象存储为blob而
- SQL Server 2008 RC0安装过程三:安装配置
站长推荐
热点阅读