如何从MySQL表中获取包含两个字段的行以进行排序?
我在MySQL中有一个带有字段的表:如何从MySQL表中获取包含两个字段的行以进行排序?,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,我在MySQL中有一个带有字段的表: id-int 日期-日期时间 评级-十进制(3,2) 依此类推,此选择中不需要其他字段。 表中大约有6000行。 我必须从表中获取过去6个月按ASC评级排序的行,然后从id ASC排序的其他行 我该怎么做?它会很快工作吗?我会做这样的事情来实现这一点: select * from tbl order by case when date >= DATE_ADD(curdate(), INTERVAL -6 MONTH)
- 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个月的所有记录都排在结果的第一位,然后再考虑按
评级
或id
排序。您可以通过对布尔值进行排序来实现这一点
date >= CURDATE() - INTERVAL 6 MONTH
首先,然后根据需要选择评级
或id
。例如:
SELECT *
FROM data
ORDER BY date >= CURDATE() - INTERVAL 6 MONTH DESC,
CASE WHEN date >= CURDATE() - INTERVAL 6 MONTH THEN rating
ELSE id
END
这行不通。它会先对id值低的旧值进行排序,然后再对评级值高的新值进行排序。@Nick你知道怎么做吗?