查询排除不符合条件的产品

Query to exclude products that do not meet a condition

我需要帮助来编写一个 SQL 查询,该查询将 return 特定仓库和商店的库存 SKU。

我需要排除仓库中没有的所有 SKU。

到目前为止我有一个基本的查询:

SELECT 
    Sap_Category,
    SapSubCategory,
    Material_ID
    Description,
    Store_Code 
    Store_Descr,
    Store_Inventory,
    Store_Type,
FROM 
    db.Stock

我尝试添加一个 where 子句,但它似乎不起作用。

WHERE
    Material_ID = (SELECT Material_ID FROM db.Stock 
                   WHERE (Store_Type = "Warehouse") AND Store_Inventory > 0)

正如评论中提到的 t@Pontnou 和@FDavidov 如果您对一个列有多个值,请在 where 子句中使用 IN 命令。

此外,您的 select 语句中的 Material_ID 后缺少一个逗号 (,)。这可能不会给出任何语法错误,但会为 Material_ID 值显示不同的列名(描述)。

SELECT 
  Sap_Category,
  SapSubCategory,
  Material_ID,
  Description,
  Store_Code 
  Store_Descr,
  Store_Inventory,
  Store_Type,
FROM 
  db.Stock
WHERE
  Material_ID IN (SELECT Material_ID FROM db.Stock 
               WHERE Store_Type = "Warehouse" AND Store_Inventory > 0)

如果您的 table 中有 Material_ID 的唯一值,您可以在主查询中使用子查询 where 子句条件。

SELECT 
  Sap_Category,
  SapSubCategory,
  Material_ID,
  Description,
  Store_Code 
  Store_Descr,
  Store_Inventory,
  Store_Type,
FROM 
  db.Stock
WHERE Store_Type = "Warehouse" AND Store_Inventory > 0