【问题标题】:query get records lesser than SQL查询获取少于 SQL 的记录
【发布时间】:2017-10-10 14:30:27
【问题描述】:

这个查询获取所有俱乐部的记录,我检查每个记录的记录。 NULL 列没有任何作用。但是我填写了NULL。这意味着任何 NULL 都不存在。 此查询使用 cfquery 获得 202 条记录,在 MSSQL 2014 上获得 204 条记录。

能否请您告诉 cfquery 无法获取某些记录会发生什么情况。精确查询在 MSSQL 2014 上完美运行。

    SELECT tblDistrict.IDDist, 
           tblClubs.IDDiv,
           tblClubs.ClubArtStart, 
           tblClubs.IDClub, 
           tblClubs.ClubName, 
           tblDivisionen.DivBezeichnung, 
           tblDivisionen.Region, 
           tblClubs.OrgDatum, 
           tblClubs.ChartDatum, 
           tblClubs.ClubStatus, 
           tblClubs.ClubArt,   
           tblClubs.Clubort

    FROM  (tblDistrict 
                INNER JOIN tblDivisionen ON tblDistrict.IDDist = tblDivisionen.IDDist)

            INNER JOIN tblClubs ON tblDivisionen.IDDiv = tblClubs.IDDiv

            WHERE (((tblDistrict.IDDist)=1)) AND Clubstatus<>'E' AND Clubstatus<>'I'

【问题讨论】:

  • 您是在问为什么没有提取 Clubstatus 为空的行吗?不确定是否理解您的问题
  • 使用分析器查看发送到数据库的确切命令。也许它和你想象的有点不同
  • 为什么主表和第一个连接在括号内?
  • @MiloBellano 我问查询是完全一样的。但使用 cfquery 的输出是 202,在 MSSQL 上是 204 条记录
  • 你怎么知道查询是完全相同的?你用探查器检查过吗?如果不是,那么你不知道皮毛确定它们是一样的

标签: sql sql-server coldfusion inner-join


【解决方案1】:

我将从一些格式和别名开始。您的查询看起来像这样。这将更易于维护。

SELECT d.IDDist
    , c.IDDiv
    , c.ClubArtStart
    , c.IDClub
    , c.ClubName
    , div.DivBezeichnung
    , div.Region
    , c.OrgDatum
    , c.ChartDatum
    , c.ClubStatus
    , c.ClubArt
    , c.Clubort
FROM tblDistrict d
INNER JOIN tblDivisionen div ON d.IDDist = div.IDDist
INNER JOIN tblClubs c ON div.IDDiv = c.IDDiv
WHERE d.IDDist = 1 
    AND c.Clubstatus not in ('E', 'I')

【讨论】:

  • 你为什么不使用c.Clubstatus not in ('E','I')?只是想知道。
  • @WEI_DBA 只是没有修复该部分。 :)
  • 在他的查询中,OP 有主表和括号内的第一个连接。这对 sql server 有什么影响吗?
  • @GuidoG 不应该。我相信在这种情况下,SQL Server 的优化器会展开所有括号。
猜你喜欢
  • 2011-07-18
  • 2022-12-05
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多