Mysql查询组按where条件限制1
我在数据库中有一个名为“articles”的表 文章:Mysql查询组按where条件限制1,mysql,Mysql,我在数据库中有一个名为“articles”的表 文章: id +++ writer_id +++ title ++++ text ---------------------------------------------------- 1 1 some title article for writer 1 2 1 some title arti
id +++ writer_id +++ title ++++ text
----------------------------------------------------
1 1 some title article for writer 1
2 1 some title article for writer 1
3 2 some title article for writer 2
4 2 some title article for writer 2
5 2 some title article for writer 2
6 3 some title article for writer 3
我需要一个查询来从表中获取最新的文章,但每个作者只需要一篇文章
取决于上面的行,查询应仅获取3行:
每篇文章由一位作者所有
2 1 some title article for writer 1
5 2 some title article for writer 2
6 3 some title article for writer 3
php
提前感谢:)结合使用
分组依据和拥有将允许您获得每位作者撰写的最后一篇文章,并正确订购:
SELECT *
FROM articles
WHERE writer_id = ????
GROUP BY writer_id
HAVING id = MAX(id)
ORDER BY id DESC
LIMIT 10
使用子查询获取每个作者的最新文章id:
SELECT * FROM articles
WHERE id in
(
SELECT MAX(id) id, writer_id
FROM articles
GROUP BY writer_id
)
又短又甜:
SELECT MAX(id), writer_id, title, text FROM articles GROUP BY writer_id;
这实际上不会将正确的文章文本和标题与正确的日期关联起来(但它似乎与这里给出的示例数据有效,因为标题和文本是重复的)。请参阅以获得更好的解决方案。
SELECT MAX(id), writer_id, title, text FROM articles GROUP BY writer_id;