0

前の質問の後、次のようなSQLクエリがあります。

SELECT * 
WHERE ... 
ORDER BY 
  CASE user_id WHEN 34 THEN 1 ELSE 2 END, 
  CASE status WHEN 'active' THEN 1 ELSE 2 END

上記のコードでわかるように、2つの CASE ... WHENステートメントがあります。この場合はどうなりますか?つまり、レコードはどのように注文されますか?それらの「二重化された」ステートメントは矛盾する可能性がありますか?


更新:次の順序でレコードを返すようにします。(1)レコードの場所user_id = 34status = 'active'; (2)どこに(条件status = 'active'なしで)記録する。user_id(3)他のすべてのレコード。どうすればそれを作ることができますか?

4

2 に答える 2

3

最初に、user_id = 34で「アクティブ」ステータスのすべてのレコードが表示され、次にuser_id = 34でステータスが「アクティブ」ではないレコードが表示され、次にuser_idが34でステータスが「アクティブ」でないレコードが表示され、最後にステータスが「アクティブ」でない残りのすべてのレコードが表示されます。 "アクティブ"

于 2012-12-10T16:17:58.730 に答える
1

注文はあなたが書いた順番で行われます。

あなたの記録は注文されます:

[最初]
user_id= 34、status='アクティブ'
user_id= 34、ステータス<>'アクティブ'
user_id <> 34、ステータス='アクティブ'
user_id <> 34、ステータス<>'アクティブ'
[最後]

于 2012-12-10T16:23:33.197 に答える