SQL 如何在每组行数没有限制的情况下限制组数

SQL How to Limit Number of Groups with No Limit in Rows Per Group

SELECT type, text, date FROM tableA GROUP BY CAST(date AS DATE) ORDER BY date DESC, id DESC LIMIT 5

我希望能够 select 所有行(最近几天排在第一位),但将前几天的数量限制为一定数量(即最后 5 天的行数)。

因此,如果我的 TableA 有 10 天,每天有 100 条记录,TableB 有 100 天,每天有 10 条记录,结果将是 TableA 有 500 个结果(5 天,每个有 100 条记录),并且TableB 将有 50 个结果(5 天,每天有 10 条记录)。

希望这是有道理的。

加入最近 5 天 returns 的子查询。

SELECT t1.type, t1.text, t2.date
FROM tableA AS t1
JOIN (SELECT DISTINCT DATE(date) AS date
      FROM tableA
      ORDER BY date DESC
      LIMIT 5) AS t2 ON DATE(t1.date) = t2.date
ORDER BY t2.date DESC, t1.id DESC