我正在寻找一个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
我没有找到解释这样做。有人可以帮帮我吗?
据我所知,你想要过去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