-1

たとえば、 30個のレコードのセットがあると想像してください

users : {user_id, name, category}

そして私はこのクエリを行いました:

     SELECT name
     FROM users
     WHERE category = "Student"
     AND id < 30
     ORDER BY user_id
     LIMIT 5

これにより、IDが1から5のユーザーが得られますが、30未満の最高のID値を取得したい場合はどうでしょうか。この場合、望ましい結果は24から29のIDになります。

ps。私の本当の問題はこれより少し複雑です、私はただ基本的な理論を手に入れたかったのです。また、別のAND句を使用して> 23と言いますが、これは私のスキーマでは機能しないことにも注意してください。

4

5 に答える 5

1

同じクエリの結果を降順で並べ替えることができます。

SELECT name
FROM users
WHERE category = "Student"
AND id < 30
ORDER BY user_id DESC
LIMIT 5

これにより、最大の5つのIDが返されます。あなたが実際に達成しようとしていることについて詳しく説明する価値があるかもしれませんが。ID列で並べ替えるのは少し厄介です。:)

于 2012-11-16T18:01:54.233 に答える
0

これを試して:

SELECT name
FROM users
WHERE category = "Student"
AND id < 30
ORDER BY user_id 
LIMIT 25,5
于 2012-11-16T18:16:08.897 に答える
0

ダンJが書いたものをセットにラップし、そこからSELECTしてから、ASCオーダーを適用することができます。MySQLの構文はわかりませんが、MSSQLでは次のようになります。

SELECT * FROM
   (Dan J's code) a
ORDER BY user_id [ASC]

ASCはオプションです。

于 2012-11-16T18:17:18.200 に答える
0

サブクエリを試すことができます:

     SELECT name
     FROM users
     WHERE category = "Student" AND
         id >((SELECT MAX(id) FROM users)-5) AS temp
     ORDER BY user_id
     LIMIT 5

テーブル構造によってはcategory = "Student"、サブクエリに移動できます。

于 2012-11-16T18:17:32.610 に答える
0

このようなロジックを参照していますか? *SQLFiddleについて

SELECT * FROM 
    (SELECT quiz_name
    FROM cursos
    WHERE id < (select max(id) from cursos)
    ORDER BY ID DESC
    LIMIT 5) ) tbl 
ORDER BY id ASC

テーブルからMAX行IDを取得し、最大5つのID値を取得します。たとえば、MAX = 9の場合、8、7、6、5、4になります。編集済み: ASCの外部選択順序を追加すると、4、5、6、7、8として取得されます。

PS:テーブルスキーマを無視してください。これは、この例で使用した古いスキーマでした。

編集されたバージョン: -申し訳ありませんが私のネットがダウンしました。

実際、Sebtが言及したネストされたSELECTラップを使用する必要があります。ただし、ネストされたselect内にIDを含める必要があるため、tbl外部選択クエリからIDを選択できます。

于 2012-11-16T18:23:02.950 に答える