2

mysql クエリの条件付き順序付けに問題があります

  1. 降順の乗数を最優先にしたい

  2. 優先順位の 2 番目のレベルでは、ポットで降順で注文したい(ただし、ポット > 80 の場合のみ)

  3. 優先度3位 ポイントで注文したい

私の問題は、ポットで注文する方法ですが、ポットが一定量以上の場合のみです。

SELECT NAME, POINTS, POT, MULTIPLIER
FROM ITEMS 
ORDER BY MULTIPLIER DESC, 
(CASE WHEN (POT > 80) THEN 'POT DESC,POINTS DESC'
ELSE 'POINTS DESC' END)

やってみたのですが、条件を満たせば第3優先度の点数順で注文しなくなってしまう・・・常に第3優先度の点数順で注文したい

注文例:

multiplier(4),pot(20),points(144)
multiplier(2),pot(90),points(130)
multiplier(2),pot(90),points(13)
multiplier(1),pot(70),points(16783)
multiplier(1),pot(77),points(1653)
multiplier(1),pot(78),points(163)
4

2 に答える 2

2

これがあなたが探しているものだと思います:

SELECT NAME, POINTS, POT, MULTIPLIER
FROM ITEMS
ORDER BY
  multiplier DESC,
  pot <= 80,
  points DESC
于 2013-10-30T16:34:32.403 に答える
0
ORDER BY multiplier DESC, (CASE WHEN pot > 80 THEN pot ELSE 80 END) DESC, points DESC
于 2013-10-30T16:24:11.927 に答える