/ / MySQL - ランク関数where節 - mysql、sql、rank

MySQL - where節内のランク関数 - mysql、sql、rank

私は私のMySQLのクエリでランク関数を使用したい。私は MySQLのランク関数

最高ランクの行を1つだけ選択したいと考えています。私の質問は次のようになります:

SELECT c1, c2, c3, @curRank := @curRank + 1 AS rank
FROM tab1 t, (SELECT @curRank := 0) r
WHERE t.c5 = "asd" AND t.c6 = "qwe" AND rank = 1
ORDER BY t.c8 DESC

そして私は次のエラーを受け取ります:

ERROR 1054 (42S22): Unknown column "rank" in "where clause"

私は間違って何をしていますか?どのように私のクエリを修正することができますか?

回答:

回答№1の場合は3

あなたは ALIAS それは同じレベルで生成された WHERE サブクエリでラップすることができます。例えば、

SELECT *
FROM
(
SELECT c1, c2, c3, @curRank := @curRank + 1 AS rank
FROM tab1 t, (SELECT @curRank := 0) r
WHERE t.c5 = "asd" AND t.c6 = "qwe"
ORDER BY t.c8 DESC
) a
WHERE rank = 1

SQLの操作順序は次のとおりです。

  • FROM句
  • WHERE句
  • GROUP BY句
  • HAVING句
  • SELECT句
  • ORDER BY句

ALIAS に作成されます SELECT 句ではまだアクセスできません WHERE 句。