1 回答

TA貢獻2051條經驗 獲得超10個贊
您的首要工作應該是修復您的數據模型并使用date類似 - 的數據類型來存儲日期信息,而不是將其分散在不同的列中。這應該像向表中添加新列并從現有列更新它一樣簡單:
alter table test_data add mydate date;
update test_data set mydate = concat(year, '-', month, '-01');
也就是說,要使您當前的查詢正常工作,您需要按如下方式微調日期條件。一種選擇使用算術:
SELECT a.year, a.month, a.value, a.category
FROM test_data AS a
WHERE (
SELECT COUNT(*)
FROM test_data AS b
WHERE
b.category = a.category
AND 100 * b.year + b.month >= 100 * a.year + a.month
) <= 2
ORDER BY a.year DESC, a.month DESC
或者,如果您運行的是 MySQL 8.0,則可以使用row_number():
SELECT a.year, a.month, a.value, a.category
FROM (
SELECT
a.*,
ROW_NUMBER() OVER(PARTITION BY a.category ORDER BY a.year DESC, a.month DESC)
FROM test_data AS a
) a
WHERE rn <= 2
- 1 回答
- 0 關注
- 108 瀏覽
添加回答
舉報