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

按特定字段值排序,如first

  •  0
  • kiks73  · 技术社区  · 7 年前

    我知道 ORDER BY FIELD(fieldname, value1, value2, ..., valueN)

    例子:

    --------------------
    | ID | DESCRIPTION |
    --------------------
    | 1  | Hello       |    
    | 2  | World       |
    --------------------
    

    我想点菜 DESCRIPTION like 'Wo%' ,比其他的

    SELECT DESCRIPTION 
    FROM table1 
    ORDER BY FIELD(DESCRIPTION, 'Wo%') DESC 
    

    预期结果是:

    ----------------
    |  DESCRIPTION |
    ----------------
    |  World       |    
    |  Hello       |
    ----------------
    

    此代码不起作用 value1, ..., valueN

    3 回复  |  直到 7 年前
        1
  •  0
  •   spencer7593    7 年前

     SELECT t.description
       FROM table1 t
      ORDER
         BY t.description LIKE 'Wo%' DESC 
          , t.description
    

    表达式 t.description LIKE 'Wo%' 将计算为0、1或NULL。 description DESC 按降序排序。

    更便携、更符合ANSI标准的等效标准是:

     SELECT t.description
       FROM table1 t
      ORDER
         BY CASE WHEN t.description LIKE 'Wo%' THEN 1 
                 WHEN t.description NOT LIKE 'Wo%' THEN 0 
            END DESC
          , t.description
    

    如果我们能省略那一秒 WHEN 就这么做吧 ELSE 0 descrption .

    如果我们不喜欢“foo-like-bar”在 ORDER BY 子句中,我们可以将其包装在一个MySQL函数中,以使将来的读者更加清楚,

     SELECT t.description
       FROM table1 t
      ORDER
         BY IF(t.description LIKE 'Wo%',1,0) DESC
          , t.description
    

    表达 订货人 条款。对于测试,我们可以在SELECT列表中包含相同的表达式,这样我们就可以“看到”(在返回的结果中)这些表达式的计算结果。但是请注意,没有要求 订货人 必须出现在 SELECT 列表。

        2
  •  1
  •   Madhur Bhaiya    7 年前

    请尝试以下操作:

    SELECT DESCRIPTION, IF(DESCRIPTION LIKE '%Wo%', 1, 99999) AS Rank  
    FROM table1 
    ORDER BY Rank ASC
    

    如果有多个 条件下,可以使用以下选项:

    SELECT DESCRIPTION, 
           CASE 
             WHEN DESCRIPTION LIKE '%Wo%' THEN 1 
             WHEN DESCRIPTION LIKE '%He%' THEN 2 
             ELSE 99999
           END AS Rank  
    FROM table1 
    ORDER BY Rank ASC
    
        3
  •  -1
  •   nacho    7 年前

    试试看

    SELECT DESCRIPTION 
    FROM table1 
    Where DESCRIPTION like 'Wo%' 
    order by DESCRIPTION.
    
    推荐文章