0
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| businees_id | varchar(500) | YES  |     | NULL    |                |
| rating      | int(11)      | YES  |     | NULL    |                |
| author_name | varchar(60)  | YES  |     | NULL    |                |
| author_url  | varchar(100) | YES  |     | NULL    |                |
| review      | text         | YES  |     | NULL    |                |
| review_date | datetime     | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

ここに私のクエリがあります:

Select * from mytable limit 0,3

上記は私のテーブルの構造です。すべてのビジネスについて、最後の 3 つのレビューを選択する必要があります。

誰でも私を助けることができますか?

4

2 に答える 2

1

このクエリはそれを行う必要があります。table_nameあなたのテーブルの名前です。ORDER BY review_date DESCMySQL に日付順でソートするように指示します。LIMIT 3結果を最初の 3 つだけに切り捨てます。

SELECT * FROM table_name ORDER BY review_date DESC LIMIT 3

于 2013-02-14T16:47:29.520 に答える
0

SQL でグループごとに最初/最小/最大行を選択する方法を参照してください

set @num := 0, @businees_id := '';

select type, variety, price
from (
   select id, businees_id, rating,  author_name, author_url, review, review_date,
      @num := if(@businees_id = businees_id, @num + 1, 1) as row_number,
      @businees_id := businees_id as dummy
  from mytable
  order by businees_id, review_date DESC
) as x where x.row_number <= 3;
于 2013-10-05T07:55:37.457 に答える