【问题标题】:Combine two queries into one with IN different condition将两个查询合二为一,条件不同
【发布时间】:2020-03-22 21:48:22
【问题描述】:

如果分成两个查询,我们得到正确的结果。

SELECT * FROM table_name
WHERE field_1 = 'name_1' AND (field_2) IN ('123', '456', '345');

SELECT * FROM table_name
WHERE field_1 = 'name_2' AND (field_2) IN ('456', '876', '548', '111');

但是如何将这两个查询合并为一个。可能会有两个以上的请求。

【问题讨论】:

  • 您使用的是 MySQL 还是 MS SQL Server?
  • 请注意,表格有,而不是字段。
  • 什么是“正确”的结果?数据是什么?
  • OR两个WHERE子句条件-

标签: mysql sql select


【解决方案1】:

如果您在 WHERE 子句中使用 OR,您可以在一个查询中执行此操作

SELECT * FROM table_name
WHERE 
(col1 = 'name_1' AND col2 IN ('123', '456', '345')
OR 
(col1 = 'name_2' AND col2 IN ('456', '876', '548', '111')

【讨论】:

    【解决方案2】:

    使用或:

    SELECT * FROM table_name
    WHERE (field_1 = 'name_1' AND (field_2) IN ('123', '456', '345'))
    OR ( field_1 = 'name_2' AND (field_2) IN ('456', '876', '548', '111'));
    

    【讨论】:

      【解决方案3】:

      你可以通过以下方法实现。

      方法一:

        SELECT field_1 ,field_2 FROM table_name
        WHERE  (field_1 = 'name_1' AND (field_2) IN ('123', '456', '345')
               ) OR 
               (
                field_1 = 'name_2' AND (field_2) IN ('456', '876', '548','111')
               )
      

      方法二:

      SELECT field_1 ,field_2 FROM table_name
      WHERE  (field_1 = 'name_1' AND  (field_2) IN ('123', '456', '345')         
      UNION              
      SELECT field_1 ,field_2 FROM table_name
      
      WHERE field_1 = 'name_2' AND (field_2) IN ('456', '876','548','111')
      

      【讨论】:

        【解决方案4】:

        如果您仍然需要输出。

        然后将 UNION 放在查询之间

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-06-23
          • 2012-06-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多