我正在学习SQL而我正在尝试运行一个查询,其中结果返回来自多个产品编号的订单。但是,在我的查询过滤器中列出这些产品编号时,我认为我犯了一个错误。我确信至少有2个订单已经放置了产品1201,因为我在单个查询中运行了数字,但是当我添加其他数字时,我得到零结果。
我的查询:
SELECT
h.customer_number, h.product_number, h.del_qty
FROM
customer_del_hist AS h
INNER JOIN
inv_master AS i ON i.product_number = h.product_number
WHERE
(i.product_number = '1200, 1201, 1202, 1203')
答案 0 :(得分:4)
你想要in
。如果这些是数字,那么您不需要单引号:
WHERE i.product_number IN (1200, 1201, 1202, 1203)
如果您收到数据类型错误,则值不是数字。在这种情况下使用单引号:
WHERE i.product_number IN ('1200', '1201', '1202', '1203')
(为什么名为" product_number"没有数字的字段是一个有趣的自引用悖论。)
答案 1 :(得分:1)
您查询(即:' =")搜索' 1200,1201,1202,1203' 字符串,而不是该地方的值你需要在运算符中使用多个值或 如
WHERE i.product_number in(1200,1201,1202)
你可以选择
WHERE i.product_number =1200 OR i.product_number =1201 OR i.product_number =1202 OR i.product_number =1203
答案 2 :(得分:1)
您可以使用子查询进一步扩展戈登的答案
where i.product_number in (select id from all_products)
答案 3 :(得分:0)
使用WHERE IN
子句
WHERE in ('1200, 1201, 1202, 1203')