代码之家  ›  专栏  ›  技术社区  ›  tirenweb

SQL:获取按列值排序的行并首先获取该列中具有concret值的行的查询。

sql
  •  0
  • tirenweb  · 技术社区  · 14 年前

    我想做一个查询,获取按列值排序的行,同时获取 第一 在该列中具有concret值的行。

    例如:

    it
    es
    fr
    it
    es
    fr
    

    如果我想首先显示带有“es”的行,结果将是:

    es
    es
    it
    it
    fr
    fr 
    

    当做

    贾维

    1 回复  |  直到 14 年前
        1
  •  0
  •   Guillem Vicens    14 年前

    我想您应该先获取列中带有“es”的记录,然后按升序获取其余记录(在您的示例中,您使用的是降序)。

    如果是这样,您可以这样做(在Oracle中)

    Select *
    From
    (
      Select T.*, 0 orden
        From Table T
       Where column_name= 'es'
       Union
      Select T.*, 1 orden
        From Table T
       Where column_name <> 'es'
    )
    Order By orden, column_name
    

    要更改列的顺序方向,只需在ORDERBY子句中添加一个DESC。

    编辑:对于MySQL,请尝试

    Select *
    From
    (
      Select T.*, 0 orden
        From Table AS T
       Where column_name= 'es'
       Union
      Select T.*, 1 orden
        From Table AS T
       Where column_name <> 'es'
    )
    Order By orden, column_name
    

    我现在没有mysql实例,所以我不能测试它。

    顺祝商祺!