通过查询很少提前mysql命令

时间:2013-09-04 16:07:30

标签: mysql

我使用以下工作mysql查询:

SELECT * 
FROM tabs  
ORDER BY 
    featured desc, 
    CASE WHEN  city='$city' THEN 0 ELSE 1 END, 
    hits DESC

首先按特征返回数据顺序,然后行包含城市值,然后点击。

数据库表'tabs'具有以下顺序

  1. id(int)
  2. city(text)
  3. tabname(text)
  4. 命中(int)的
  5. featured(int)
  6. 如何通过首先在城市中显示数据,然后从城市获取其他数据,然后按命中排序

    例如

    如果我住在罗马,我希望数据按此顺序返回。所有标签首先是city ='Rome'和features ='1',然后是其他标签来自罗马(同城市='罗马'),然后点击desc。

    我试过但是失败了:

    SELECT *
    FROM tabs  
    ORDER BY 
        featured desc, 
        CASE WHEN  featured='1' and city='$city' THEN 0 ELSE 1 END, 
        CASE WHEN city='$city' THEN 0 ELSE 1 END, 
        hits DESC
    

1 个答案:

答案 0 :(得分:2)

请试试这个:

SELECT * FROM tabs  
ORDER BY featured desc, 
CASE WHEN featured='1' and city='$city' THEN 0
     WHEN featured='0' and city='$city' THEN 1
ELSE 2 END, 
hits DESC