【问题标题】:SQL NULL ProductsSQL NULL 产品
【发布时间】:2017-09-19 17:59:09
【问题描述】:

我必须让它显示有多少可用的类别目前没有任何产品。不知道我做错了什么,因为我已经移动了一些东西,但仍然得到了 682 行的结果,而应该是为 0。

SELECT 
    Quantity, 
    ProductName, 
    CategoryID

FROM 
    Products,
    OrderItems 

WHERE NOT EXISTS (
    SELECT Quantity
    FROM OrderItems
    WHERE Quantity IS NULL
)

被告知需要在其中使用“NOT EXIST”。

【问题讨论】:

  • 您需要加入您从中选择的两个表...否则结果将不是您所期望的。
  • 请提供样本数据、所需结果和您正在使用的数据库的标签。

标签: sql not-exists


【解决方案1】:

您需要表之间的连接条件。第一个提示:永远不要FROM 子句中使用逗号。 始终使用正确、明确的JOIN 语法。

我假设你想要这样的东西:

SELECT oi.Quantity, p.ProductName, p.CategoryID
FROM Products p LEFT JOIN
     OrderItems oi
     ON oi.ProductId = p.ProductId
WHERE oi.quantity IS NULL;

确切的语法有点猜测,因为您没有提供示例数据。

【讨论】:

  • 我不同意“从不使用逗号”的说法。相反,我认为如果一个人知道自己在做什么,那么使用逗号就可以了......
  • @Gordon 是的,但被告知必须使用 NOT EXIST
  • @PeterAbolins 。 . .连接的类型应该总是明确声明。如果不是,那么编写查询的人 (1) 可能不知道他们在做什么,并且 (2) 不在乎其他人是否能够理解他们的意图。
猜你喜欢
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多