0

テーブルから最大マイレージと2番目に大きいマイレージを選択しようとしています。

これまでの私の質問は次のとおりです。

SELECT oil.empid, oil.mileage, users.name, oil.date, MAX(oil.mileage)
FROM oil, users
WHERE oil.empid = users.empid
GROUP BY oil.empid
ORDER BY oil.mileage

ただし、これにより、最初に入力されたマイレージと最大マイレージが選択されます。

これを変更して2番目に大きなマイレージを取得するにはどうすればよいですか?

4

3 に答える 3

1

基本的に、通常のクエリを実行し、降順で並べ替えて2で制限します。以下のようなもの(テストされていません)

SELECT
    oil.empid,
    oil.mileage,
    users.name,
    oil.date
FROM oil, users
WHERE (oil.empid = users.empid)
GROUP BY oil.empid
ORDER BY oil.mileage DESC
LIMIT 2
于 2012-06-26T16:34:32.150 に答える
0

これを試してください:Uが最後から2番目のマイレージのみを必要とする場合は、これを使用してください::

SELECT oil.empid, oil.mileage, users.name, oil.date, MAX(oil.mileage)
FROM oil, users
WHERE oil.empid = users.empid
GROUP BY oil.empid
ORDER BY oil.mileage desc
limit 1, 1

最大値と最後から2番目の両方が必要な場合は、次を使用してください。

SELECT oil.empid, oil.mileage, users.name, oil.date, MAX(oil.mileage)
FROM oil, users
WHERE oil.empid = users.empid
GROUP BY oil.empid
ORDER BY oil.mileage desc
limit 2
于 2012-06-26T16:34:44.630 に答える
0

それを行うための迅速で汚い方法は、ソートすることです

ORDER BY oil.mileage DESC

その後

LIMIT 0, 2
于 2012-06-26T16:37:05.940 に答える