sql >> データベース >  >> RDS >> Mysql

MySQLで結果をランク付けするときにタイを処理するにはどうすればよいですか?

    編集 :これはMySQL4.1以降でサポートされています

    使用:

       SELECT st.name,
              sc.grades,
              CASE 
                WHEN @grade = COALESCE(sc.grades, 0) THEN @rownum 
                ELSE @rownum := @rownum + 1 
              END AS rank,
              @grade := COALESCE(sc.grades, 0)
         FROM STUDENTS st
    LEFT JOIN SCORES sc ON sc.student_id = st.id
         JOIN (SELECT @rownum := 0, @grade := NULL) r
     ORDER BY sc.grades DESC
    

    クロス結合(MySQLでは、基準のないINNER JOIN)を使用して、個別のSETを使用せずに変数を宣言して使用できます。 ステートメント。

    NULLを適切に処理するには、COALESCEが必要です。



    1. 例を使用してSQLSELECTの使用方法を学ぶ

    2. 単一のホストで複数のPostgreSQLインスタンスを実行する

    3. MySQLクエリの出力をutf8に変換します

    4. 保存されたmd5文字列をMySQLで10進値に変換します