MySQL选择最近6个月前或者如果结果总和少于100 100个最后插入的行

问题描述 投票:-1回答:1

我正在寻找一个MySql查询,它返回最近6个月前的更新数据OR / AND,如果结果总和小于100,则接下来的n行要完成100。

表创建查询:

CREATE TABLE `content` (
  `id` int(11) NOT NULL,
  `id_cat` int(11) NOT NULL,
  `title` text,
  `lastUpdate` date NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

ALTER TABLE `content`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `content`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10175;

查询的第一部分是:

 SELECT *
FROM content,
     categories
WHERE categories.id = content.id_cat
  AND lastUpdate > DATE_SUB(now(), INTERVAL 6 MONTH)
ORDER BY lastUpdate DESC,
         content.id DESC,
         content.title ASC

我没有找到解释这样做。有人可以帮帮我吗?

mysql date if-statement
1个回答
0
投票

据我所知,你想要过去6个月内的所有记录;如果该集合少于100条记录,则选择前100条最新记录。

一种方法如下:

SELECT *
FROM content
INNER JOIN categories
ON categories.id = content.id_cat
WHERE lastUpdate > DATE_SUB(now(), INTERVAL 6 MONTH)
OR content.id IN (SELECT content.id FROM content
INNER JOIN categories
ON categories.id = content.id_cat
ORDER BY lastUpdate DESC,
         content.id DESC,
         content.title ASC
LIMIT 100)

ORDER BY lastUpdate DESC,
         content.id DESC,
         content.title ASC
© www.soinside.com 2019 - 2024. All rights reserved.