0

user2 つのフィールドを持つ1 つのテーブルを持つデータベースを考えてみましょう。

「id」(型:INTEGER、PRIMARY KEY)
「名前」(型:VARCHAR(32))

idテーブルから の2 番目に高い値を取得する標準 SQL クエリを作成しuserます。返される値は、列名を使用して表す必要がありますid

標準 SQL はどれですか?

select id from user order by id desc limit 1,1;

select user.id as id from user order by user.id desc limit 1,1;

両方とも間違っていたら、正解は?

4

5 に答える 5

1
select 
    secondhighest.id
from 
    "user" highest
    left join "user" biggerthanhighest on 
        biggerthanhighest.id > highest.id
    left join "user" secondhighest on
        highest.id > secondhighest.id
    left join "user"  biggerthansecondhighest on
        biggerthansecondhighest.id > secondhighest.id and
        biggerthansecondhighest.id < highest.id
where
    biggerthanhighest.id is null and
    biggerthansecondhighest.id is null

トップクエリとサブクエリを回避します。非常に大きなテーブルではかなり高速である可能性がありますか?

于 2013-06-27T06:22:56.957 に答える
1
SELECT MAX( id) FROM user where id !=( SELECT max (id) FROM user ) 
于 2013-06-27T06:05:55.830 に答える
0
SELECT TOP 1 id
FROM (
SELECT DISTINCT TOP 2 id
FROM user
ORDER BY id DESC) a
ORDER BY id

これもかなり標準的だと思います。

于 2013-06-27T03:38:30.743 に答える