153

主キーであるidという名前の列内のMySQLデータベースから最後の50行を選択したいと思います。目標は、行をASCの順序でIDで並べ替える必要があることです。そのため、このクエリは機能しません。

SELECT 
    *
FROM
    `table`
ORDER BY id DESC
LIMIT 50;

また、行が操作(削除)される可能性があることも注目に値します。そのため、次のクエリも機能しません。

SELECT 
    *
FROM
    `table`
WHERE
    id > ((SELECT 
            MAX(id)
        FROM
            chat) - 50)
ORDER BY id ASC;

質問:操作してASCの順序にすることができるMySQLデータベースから最後のN行を取得するにはどうすればよいですか?

4

5 に答える 5

276

あなたはサブクエリでそれを行うことができます:

SELECT * FROM (
    SELECT * FROM table ORDER BY id DESC LIMIT 50
) sub
ORDER BY id ASC

これにより、から最後の50行が選択tableされ、昇順で並べ替えられます。

于 2012-08-25T21:49:04.483 に答える
18
SELECT * FROM table ORDER BY id DESC LIMIT 50

リソースを節約して1つのクエリを作成し、ネストされたクエリを作成する必要はありません

于 2015-08-06T21:40:43.117 に答える
11
SELECT * FROM table ORDER BY id DESC,datechat desc LIMIT 50

チャットが送信された日付(および時刻)を格納している日付フィールドがある場合、または行ごとに増分(DESCで並べ替え)または非増分(ASCで並べ替え)データが入力されているフィールドがある場合は、2番目の列として入力します。データはどの順序である必要があります。

それが私のために働いたものです!!!! それが役立つことを願っています!!!!

于 2016-01-26T12:11:31.193 に答える
0

これを使用して、mysqlから最後のn行を取得します

ID desclimit10によるtbl順序から*を選択します。

N値に応じた使用制限。

于 2022-02-11T13:44:46.933 に答える
-3
select * from Table ORDER BY id LIMIT 30

注:*idは一意である必要があります。30*クエリ内のを置き換えることで返される行数を制御できます

于 2019-07-05T13:36:09.163 に答える