13

次のフィールドを持つ学生のテーブルがあります。

student(student_id, student_name, student_avg)

結果を次のように表示するMySQLでクエリを作成する必要があります。

シリアル番号。1,2,3,...,n=>結果には、結果の各行の自動インクリメントのように、 シリアル番号を持つ新しい列も必要です。

student_id
student_name
student_avg > 4

テーブルを変更したくありません。私がしなければならないのは、上記の結果を得るクエリを書くことだけです。私がはっきりしていることを願っています。

サンプルデータ:

student_id         student_name      student_avg 
 1                    abc               2.5
 2                    xyz               4.1
 3                    def               4.2     

クエリ後の出力例:

serial_no    student_id    student_name     student_avg
  1             2            xyz               4.1
  2             3            def               4.2
4

2 に答える 2

44

これを試してみてください

SELECT  @s:=@s+1 serial_number,student_id,student_name,student_avg
FROM    students,
        (SELECT @s:= 0) AS s
WHERE
student_avg > 4;

https://stackoverflow.com/a/11096550/1423506

于 2012-08-08T10:08:32.620 に答える
11
SET @serial=0;
SELECT @serial := @serial+1 AS `serial_number`, `column_name` FROM `table_name`;

あなたの特定のケースでは:

SET @serial=0;

SELECT 
   @serial := @serial+1 AS `serial_number`, 
   `student_id`, 
   `student_name`, 
   `student_avg`
FROM 
   `students`
WHERE
   `student_avg` > 4;
于 2012-08-08T10:00:49.853 に答える