1

次のフィールドを持つテーブルがあります:last_updatevotesuptime

last_update > 0 さて、最初にすべてのテーブルをどのように選択し、次にを選択する必要がありますかlast_update = 0。次に、すべてを量で並べ替えvotes、最後にuptime

last_update > 0last_update = 0サーバーがリストの一番上または一番下に配置されるため、非常に重要です。

last_updateをソートしないでください!last_update > 0との場合にのみ並べ替えますlast_update = 0

現在私は持っています:

SELECT * FROM servers ORDER BY votes DESC, last_update DESC, uptime_pct DESC
4

3 に答える 3

4

SELECT構文 によれば[ORDER BY {col_name | expr | position} [ASC | DESC], ...]、式の構文を順番に並べることができます。

したがって、クエリは次のようになります。

SELECT * FROM servers ORDER BY last_update>0 DESC, votes DESC, uptime_pct DESC
于 2012-05-25T15:16:31.560 に答える
2
SELECT * FROM servers 
WHERE last_update > 0 
ORDER BY last_update DESC, votes DESC, uptime_pct DESC

アップデート:

last_update > 0およびで行を選択するにはlast_update = 0

SELECT * FROM servers 
ORDER BY last_update DESC, votes DESC, uptime_pct DESC

このクエリ:

  • からすべての行を選択servers
  • 最近更新されたサーバーが一番上に表示され、更新されていないサーバー(last_update = 0)が一番下に表示されます。
  • 2つのサーバーが同じlast_updateである場合、投票数が最も多いサーバーが最初に表示されます。
  • 2つのサーバーのとが同じlast_updateである場合votes、最も高いサーバーがuptime_pct最初に表示されます。
于 2012-05-25T15:15:51.637 に答える
0

質問の私の理解は、すべてのlast_update> 0であり、このリストは投票とuptime_pctに基づいてソートする必要があり、last_update=0のすべての行のリストが必要です。

SELECT * FROM servers 
 WHERE last_update > 0 
ORDER BY last_update DESC, 
         votes DESC, 
         uptime_pct DESC
UNION
SELECT * FROM servers 
 WHERE last_update = 0 
ORDER BY votes DESC, 
         uptime_pct DESC
于 2012-05-25T15:18:38.547 に答える