【问题标题】:Multiple Values in SQL QuerySQL 查询中的多个值
【发布时间】:2015-05-21 05:19:43
【问题描述】:

我正在学习 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')

【问题讨论】:

    标签: sql sql-server filter


    【解决方案1】:

    你想要in。如果这些是数字,那么您也不需要单引号:

    WHERE i.product_number IN (1200, 1201, 1202, 1203)
    

    如果您遇到数据类型错误,则这些值不是数字。在这种情况下使用单引号:

    WHERE i.product_number IN ('1200', '1201', '1202', '1203')
    

    (为什么名为“product_number”的字段没有数字是一个有趣的自我参照悖论。)

    【讨论】:

    • 我相应地修改了查询并收到以下错误:Msg 245, Level 16, State 1, Line 1 Conversion failed when convert the varchar value '006R01179XER' to data type int.
    • 如果您的 i.product_number 字段实际上不是数字(如错误所示),您可以比较字符串,在每个 product_number 周围放置单引号并使用逗号作为分隔符:WHERE i.product_number IN ('1200', '1201', '1202', '1203')
    【解决方案2】:

    You Query(ie: '=" ) 搜索 '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
    

    【讨论】:

      【解决方案3】:

      您可以使用子查询进一步扩展 Gordon 的答案

      where i.product_number in (select id from all_products)
      

      【讨论】:

        【解决方案4】:

        使用WHERE IN 子句 WHERE in ('1200, 1201, 1202, 1203')

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-12-27
          • 2011-05-29
          • 1970-01-01
          • 1970-01-01
          • 2022-08-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多