2

私は大規模な製品データベースを持っており、毎週日曜日に、私のスクリプトは50の新製品をアクティブ化しています。スクリプトのいくつかのルールに基づいて、アクティブ化を優先する必要があるいくつかの製品を見つけています。(たとえば、「ハローキティ」と「メシュガー」という名前の製品を他の何よりも優先する必要があるとしましょう)

私のデータベーステーブルには、製品に関する情報と一意のIDが含まれています。スクリプトがこれらのIDを5つ見つけ、タイトルにハローキティが含まれているとします。

では、優先順位の高いアイテムが一番上に表示され、その後にid descが続くように、クエリを作成するにはどうすればよいですか?

ここに、その後のimの擬似コードがあります。

SELECT * FROM products order by (id='59', id='47', id='28', id='29', id='20'), id desc limit 50

結果は、最初にID 59、47、28、29、および20を示し、次にidの降順でソートされた製品テーブル内の他のIDを示します。

1つのクエリでそれは可能ですか?

4

2 に答える 2

8

使用するFIELD

SELECT * 
FROM products 
order by FIELD(id,59,47,28,29,20), id desc 
limit 50
于 2013-02-25T14:26:40.553 に答える
1

実際、擬似コードもそのようなクエリにかなり近いものです。

SELECT *
FROM products
order by id='59' desc, id='47' desc, id='28' desc, id='29' desc, id='20' desc, id desc
limit 50

これは、条件が0または1に評価されるという事実を使用します。

于 2013-02-25T15:10:36.450 に答える