代码之家  ›  专栏  ›  技术社区  ›  Bitwise DEVS

如何在SQL中同时使用LIMIT和IN来创建默认行?

  •  -1
  • Bitwise DEVS  · 技术社区  · 2 年前

    我正在W3School探索SQL page 我有这样的要求,我需要将查询限制在某个特定的数字内,但也有一个默认行包含在该限制内。

    enter image description here

    这里我想要一个默认的行,其中客户的名字是Alfreds,然后抓取剩下的29行来完成查询,不管他们的名字是什么。

    enter image description here

    我试着去看另一个如此复杂的问题,但它们太复杂了,无法理解,也无法使用不同的语法。

    3 回复  |  直到 2 年前
        1
  •  1
  •   Asgar    2 年前

    你要找的是一个特定的订单条款。 试试这个

    SELECT * FROM Customers order by (case when CustomerName in ('Alfreds Futterkiste') then 0 else CustomerId end) limit 30 ;

        2
  •  1
  •   Caius Jard    2 年前

    使用 UNION 合并这两个查询。

    SELECT *
    FROM Customers
    WHERE CustomerName != 'Alfredo Futterkiste'
    LIMIT 29
    UNION 
    SELECT *
    FROM Customers
    WHERE CustomerName = 'Alfreo Futterkiste'
    
        3
  •  1
  •   Caius Jard    2 年前

    如果要在SQL中使用默认行,那么应该在表中使用已知的主键,将该行合并到查询中:

    --default row, that is always included as long as the table has a PK 1
    SELECT *
    FROM Customers
    WHERE CustomerId = 1
    
    UNION ALL
     
    --other rows, a variable number of
    SELECT *
    FROM Customers
    WHERE CustomerId <> 1 AND ...
    
    LIMIT 30
    

    以这种方式提出的限制适用于工会的结果

    如果你想做一些事情,把有限的集合以其他组合组合在一起,你可能会想看看,比如

    (... LIMIT 2)
    UNION ALL
    (... LIMIT 28)