1

私は2つの列student_name(uniqe制約付き)、student_marksを持つstudent_tableテーブルを持っています。この表から、3 番目に高い成績を収めた生徒の記録を取得する必要があります。

私はこれを試しましたが、間違っています:

select * from student_table orderby(marks) enum(marks)=3;

このクエリを修正するにはどうすればよいですか?

4

7 に答える 7

5

ここに非常に簡単な解決策があります

select *
from marks
order by marks desc
limit 2,1

limit を使用すると、オフセットと長さを使用できます。ここでは、オフセットは 0 から始まるため、2 に設定されています。3 番目のレコードの場合。そして1が限界です。

ここに別の解決策があります

$res=mysql_query("SELECT * from marks order by marks desc");
mysql_data_seek($res, 2);
$row=mysql_fetch_assoc($res));
于 2012-04-04T11:32:12.787 に答える
4

これを試して

SELECT * FROM `student_table` ORDER BY marks DESC LIMIT 2,1
于 2012-04-04T12:06:48.230 に答える
3

3番目のレコードだけが必要な場合:

SELECT * FROM student_table ORDER BY marks DESC LIMIT 2,1

LIMITコマンドについて読んでください。

于 2012-04-04T11:27:05.237 に答える
2

MySQL では次のことができます。

SELECT * FROM Student_Table ORDER BY Marks LIMIT 2, 1
于 2012-04-04T11:26:59.470 に答える
1
select * from students_table orderby marks limit 2,1

制限の詳細については、この URL を確認してくださいhttp://php.about.com/od/mysqlcommands/g/Limit_sql.htm

于 2012-04-04T11:26:41.857 に答える
0

次のクエリは、1 位、2 位、または 3 位に並んでいる学生の数に関係なく、3 位の学生のすべてのレコードを返します。

SELECT student_table.name, student_table.marks
  FROM student_table
 WHERE student_table.primary_key IN (   SELECT ranked.primary_key
                                          FROM student_table ranked
                                     LEFT JOIN student_table others
                                               ON ranked.marks < others.marks
                                      GROUP BY 1
                                        HAVING COUNT(DISTINCT others.marks) + 1 = 3)

たとえば、student_table次のようになっているとします。

+---------+-------+
| name    | marks |
+---------+-------+
| Alpha   |   100 |
| Able    |   100 |
| Bravo   |    98 |
| Baker   |    98 |
| Bone    |    98 |
| Charlie |    93 | <-- 3rd place by marks
| Chimp   |    93 | <-- 3rd place by marks
| Delta   |    85 |
| Echo    |    80 |
| Ebert   |    80 |
+---------+-------+

クエリは次のようになります。

+---------+-------+
| name    | marks |
+---------+-------+
| Charlie |    93 |
| Chimp   |    93 |
+---------+-------+

余談ですが、MySQL が DENSE_RANK() をサポートしていれば、クエリは少し簡単になりますが、上記のようにサブクエリを使用してその関数をシミュレートできます。

于 2012-04-04T17:13:23.407 に答える