1

次のテーブル構造を検討してください。

id   speed 
 1   100
 2   200
 3   300
 4   400
 5   500

次のクエリを考えてみましょう: "SELECT * FROM records WHERE speed >= 300"- これは行 #3、4、5 を返します。このクエリを変更して、同じ300速度パラメータで条件に適合しない最初の行、つまり #2 も返すようにする方法はありますか? 最終結果が行#2、3、4、5になるように?

UPD: ここでのすべての値とレコード数は任意であり、例にすぎないことに注意してください。データベースはSQLiteです。

4

3 に答える 3

3

これを試して:

SELECT *
FROM Test
WHERE Speed >= 300

UNION

SELECT * 
FROM (
    SELECT *
    FROM Test
    WHERE Speed < 300
    ORDER BY Speed DESC
    LIMIT 1
) AS XXX

ORDER BY Speed

デモを見る

注: SQLite 構文用に変更されました。

于 2014-08-21T14:43:18.297 に答える
2

この単純なクエリを試してみてください。最大 ID と速度が 300 未満の行と、速度が 300 以上の行が選択されます。

SELECT * 
FROM records 
WHERE speed >= 300
OR id = (SELECT MAX(id) FROM records WHERE speed < 300)
ORDER BY id;
于 2014-08-21T14:55:23.790 に答える