【问题标题】:How make a select with "repeated" condition in SQL?如何在 SQL 中使用“重复”条件进行选择?
【发布时间】:2011-12-21 05:32:23
【问题描述】:

我有以下选择需要完成:

从 Products where
中选择前 1 个 a、b、c、d CodDep = 10 或
CodDep = 11 或
CodDep = 12 或 CodDep = 13 或
CodDep = 26 或
CodDep = 27 或 CodDep = 32 或
CodDep = 34 或
CodDep = 248442 或
CodDep = 259741 按 LastUpdate 排序

有没有一种简单的方法可以避免所有这些重复?

【问题讨论】:

    标签: sql windows


    【解决方案1】:
    select top 1 
      a, b, c, d 
    from 
      Products 
    where
      CodDep IN (10,12,12,13,26,27,32,34,248442,259741)
    order by 
      LastUpdate
    

    【讨论】:

      【解决方案2】:

      试试这个查询:

      SELECT TOP 1 a, b, c, d FROM Products WHERE
      CodDep IN (10,11,12,13,26,27,32,34,248442,259741) ORDER BY LastUpdate 
      

      【讨论】:

      • 我认为 SQLServer 中没有 Limit 关键字。由于原始查询中的 Top 关键字,我猜是 sql sever。
      • 好的。我还没有假设 SQL 服务器。我已经改变了答案。感谢您的建议。
      【解决方案3】:

      SQL 只有一种数据结构:表。将值放入表中并将semi join 放入该表中,例如

      WITH Params
           AS 
           (
            SELECT * 
              FROM (
                    VALUES (10), (11), (12), (13),
                           (26), (27), (32), (34), 
                           (248442), (259741)
                   ) AS T (CodDep)
           )
      SELECT TOP 1 a, b, c, d 
        FROM Products 
       WHERE CodDep IN (SELECT CodDep FROM Params)
       ORDER 
          BY LastUpdate;
      

      【讨论】:

        猜你喜欢
        • 2020-03-28
        • 1970-01-01
        • 1970-01-01
        • 2020-08-28
        • 1970-01-01
        • 1970-01-01
        • 2021-07-21
        • 1970-01-01
        • 2022-01-24
        相关资源
        最近更新 更多