如何从MySQL表中获取具有两个字段的行?



>我在MySQL中有一个表,其中包含字段:

  • id - int;
  • 日期 - 日期时间;
  • 评分 - 十进制(3,2(;

依此类推,此选择中不需要其他字段。
表中大约有 6000 行。
我必须从过去 6 个月的按评级 ASC 排序的表中获取行,然后按 id ASC 排序的其他行。
我该怎么做?它会很快起作用吗?

我会做这样的事情来实现这一点:

select * 
from tbl
order by case 
when date >= DATE_ADD(curdate(), INTERVAL -6 MONTH) then 
rating 
else id 
end ASC;

您需要确保过去 6 个月的所有记录都排在结果中,然后担心按ratingid排序。您可以通过对布尔值进行排序来做到这一点

date >= CURDATE() - INTERVAL 6 MONTH

首先,然后根据需要ratingid。例如:

SELECT *
FROM data
ORDER BY date >= CURDATE() - INTERVAL 6 MONTH DESC,
CASE WHEN date >= CURDATE() - INTERVAL 6 MONTH THEN rating
ELSE id
END

最新更新