加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

否定选择SQL查询

发布时间:2021-01-14 23:55:32 所属栏目:编程 来源:网络整理
导读:我的使命是从我们的sql数据库中返回一个否认的选择.我会尽也许地界说尺度.到今朝为止,我还没有建造出有用的查询. 营业表 [公交车名称] [公交车ID] 勾当表 [勾当ID] [公交车ID] 勾当扩展表 [分机ID] [勾当ID] [巴士ID] 我必要在关联表中没有该企业ID#记录的所

我的使命是从我们的sql数据库中返回一个否认的选择.我会尽也许地界说尺度.到今朝为止,我还没有建造出有用的查询.

营业表

[公交车名称] [公交车ID]

勾当表

[勾当ID] [公交车ID]

勾当扩展表

[分机ID] [勾当ID] [巴士ID]

我必要在关联表中没有该企业ID#记录的全部企业的企业名称.简朴地说,全部企业都没有勾当.营业ID可以存在于一个或两个关联表中.

在实行行使毗连举办查询而不是在语句中存在或不存在时,这会导致我几个小时的贫困.没有乐成.

有任何设法吗?

办理要领

行使NOT IN
SELECT 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.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读