如何根据where条件获取mysql中的前四条记录

pinkon5k  于 2021-06-25  发布在  Mysql
关注(0)|答案(5)|浏览(333)


我在mysql表中有数据,我想从给定的条件中获取最后的记录。示例:我要传递month='11'和year='2017',并获取month\u id的11、10、9和8。
我在这里添加了示例数据:http://sqlfiddle.com/#!9/eb01c5/2号
谢谢您。

vyu0f0g1

vyu0f0g11#

select * from `tablename` where year = 2017 AND month<=11 order by month desc  limit 4;

或者

select * from `tablename` where year = 2017 AND month IN (11,10,9,8);
ej83mcc0

ej83mcc02#

sql可以这样编写:

select *
from d
-- find all rows for this month or previous
where
   (year = 2017) and (month <= 11)  -- same month / earlier in same year
or (year < 2017)                    -- earlier year
-- for all found rows, order descending by year, then month
order by year desc, date desc
-- take the first 4 (descending by date)
limit 4

如果将年+月存储为复合值(例如,月的第一个)会更简单,但同样的逻辑将应用于查找“n个记录”。

643ylb08

643ylb083#

检查一下这个 select * from mt_month where month_id<=11 order by month_id desc limit 4

9jyewag0

9jyewag04#

您可以执行以下示例:

select * from mt_month
 where year=2017 AND month=11
 order By year Desc limit 4;
vxbzzdmp

vxbzzdmp5#

既然你知道你想要的数据来自哪个月,为什么不用呢 select * from mt_month where start_date BETWEEN '2017-08-01' AND '2017-11-01' 返回数据?您可以传递查询的开始日期和结束日期

相关问题