3

次の作業用mysqlクエリを使用します。

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

最初に特徴別にデータの順序を返し、次に行に都市の値があり、次にヒットがあります。

データベーステーブル「タブ」には次の順序があります

  1. id(整数)
  2. 都市(テキスト)
  3. タブ名(テキスト)
  4. ヒット数(int)
  5. 特集 (int)

最初に都市で取り上げられたデータの順序を取得し、次に都市の他のデータを取得してから、ヒット順でデータを取得する方法

例えば

私がローマに住んでいて、この順序でデータを返したい場合。すべてのタブが最初に表示され、city='Rome' およびfeatured='1' が表示され、次にローマの他のタブ (同じ都市 city='Rome') が表示され、次に 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
4

1 に答える 1

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
于 2013-09-04T16:13:18.607 に答える