0

行番号に従って mysql を照会したいですか? 最後の 10 行を照会したいとします。これを mysql クエリで行うにはどうすればよいですか?

これが私のmysqlクエリですが、6日間の間隔に従ってクエリを実行しますが、6日間の間隔ではなく、最後の10行に従ってクエリを実行する必要があります。

SELECT people_id, people_number 'people number', count(people_number) 'Occurs',
  (
   Select count(people_number) from people_history
   where people_id =  5486 and date > DATE_SUB(NOW(), INTERVAL 6 DAY)
  ) 'Total',
  count(people_number)/(
      Select count(people_number) from people_history
      where people_id = 5486 and date > DATE_SUB(NOW(), INTERVAL 6 DAY)
  )*100 'Percent'
FROM people_history
where people_id = 5486 and date > DATE_SUB(NOW(), INTERVAL 6 DAY)
group by people_id, people_number
order by Percent desc`
4

5 に答える 5

4

クエリを次のようにします。

SELECT * FROM people_history ORDER BY id DESC LIMIT 10

Limitを使用すると、クエリから取得する結果の量を制限できます。ID で並べ替えることで、テーブル内の最新の 20 件の結果を取得できます。

于 2012-05-02T15:08:55.787 に答える
1

順序を逆にすると、最後の 10 が最初の 10、LIMIT by 10 になります。

于 2012-05-02T15:10:30.863 に答える
1

LIMIT返される結果の数を制限します。クエリの最後に移動します。SELECT のドキュメントを見て、 LIMIT セクションに進んでください。

クエリの最後に追加するLIMIT 10と、探している 10 件の結果のみが得られます。LIMIT を ORDER BY (ASC または DESC) と組み合わせて、最初または最後の結果を取得します。

于 2012-05-02T15:11:07.580 に答える
1

LIMIT:

SELECT 
    people_id,
    people_number 'people number',
    count(people_number) 'Occurs',
    (Select 
        count(people_number) 
    from 
        people_history 
    where 
        people_id = 5486 
        and date > DATE_SUB(NOW(), INTERVAL 6 DAY)) 'Total',            
    count(people_number) / 
        (Select 
            count(people_number) 
        from 
            people_history 
        where 
            people_id = 5486 
            and date > DATE_SUB(NOW(), INTERVAL 6 DAY)) *100 'Percent' 
FROM 
    people_history 
WHERE
    people_id = 5486 
    and date > DATE_SUB(NOW(), INTERVAL 6 DAY)
GROUP BY
    people_id, people_number 
ORDER BY 
    Percent desc
LIMIT 0, 10

そして、そのクエリを少し書き直したくなるかもしれません。

于 2012-05-02T15:08:25.627 に答える
0

「最後」は、ある種の順序付け(order by ....)ステートメントを参照する必要があります。あなたは常に制限Nを追加します(あなたの場合はN = 10)

于 2012-05-02T15:10:14.107 に答える