缺少NOT IN子句中的数据行

时间:2014-03-12 15:58:35

标签: sql-server tsql subquery notin

我刚刚意识到我的自动计价计算没有填写ListID 4的价格。 我从下面显示的SELECT中插入了价格。

对于bugg研究,我执行了没有WHERE部分的SELECT,它显示了示例数据行。

我找不到错误,为什么它没有显示在完整的选择中(它没有ListID = 4的条目)。

有人可以看到我的错误吗?

Not In Error

编辑:只是单独尝试了子选择,它没有显示所请求文章的行。为什么NOT IN子句不受此事实的影响? subselect

1 个答案:

答案 0 :(得分:0)

很有可能,这是因为您将artikelnummerauspraegungID结合起来。

我认为你没有说明'100' + '0''10' + '00'有意义的事实。


不是尝试将两个字段合并为一个,而是尝试以下内容?

SELECT
  *
FROM
  #allArticles  AS allArticles
WHERE
  Artikelnummer = 'IT-810260'
  AND NOT EXISTS (SELECT *
                    FROM KHKPreisListenArtikel
                   WHERE ListeID       = 4
                     AND Artikelnummer = allArticles.Artikelnummer
                     AND Auspraegung   = allArticles.Auspraegung
                 )


如果仍然不起作用,那么必须在该另一个表中有相应的记录,找到它们就像这样......

SELECT
  *
FROM
  #allArticles            AS allArticles
INNER JOIN
  KHKPreisListenArtikel   AS Preis
    ON  Preis.ListeID       = 4
    AND Preis.Artikelnummer = allArticles.Artikelnummer
    AND Preis.Auspraegung   = allArticles.Auspraegung
WHERe
  allArticles.Artikelnummer = 'IT-810260'

还请注意

请不要包含代码图片,请复制代码,以便我们也可以复制。

当表/字段是另一种语言时,

特别是 ......


修改

这是一个查询,它将显示原始查询失败的原因。

SELECT
  *
FROM
  #allArticles            AS allArticles
INNER JOIN
  KHKPreisListenArtikel   AS Preis
    ON  Preis.ListeID       = 4
    AND Preis.Artikelnummer       + CONVERT(VARCHAR(50), Preis.Auspraegung)
        =
        allArticles.Artikelnummer + CONVERT(VARCHAR(50), allArticles.Auspraegung)
WHERE
  allArticles.Artikelnummer = 'IT-810260'