加入两个MySQL表,并从类别导致
SELECT art.*,arg. FROM rd_articles AS art LEFT JOIN rd_argument AS arg ON art.cat=arg.id WHERE art.enabled=1 ORDER BY art.id DESC
LIMIT 10
这是简单的连接查询 文章表结构加入两个MySQL表,并从类别导致
ID cat Description Date 1 1 Abc 08-01-2014
2 1 Aaa 10-01-2014
3 2 Abcv 11-01-2014
4 3 Aaa 12-01-2014
5 3 Aaa 14-01-2014
参数表
ID Name 1 A
2 B
3 C
我想挑最后更新(日期)每只猫一个项目。 如何?
回答:
这假定enabled
列是rd_articles
:
SELECT art.*, arg.* FROM (
SELECT * FROM rd_articles
INNER JOIN (
SELECT cat, MAX(date) AS maxdate
FROM rd_articles
WHERE enabled = 1
GROUP BY cat
) md ON rd_articles.cat = md.cat AND rd_articles.date = md.maxdate
) art
LEFT JOIN rd_argument AS arg ON art.cat = arg.id
最内层查询获取每个类别的最大日期,然后将其加入到rd_articles
表得到的只有那些rd_articles
行有最新的日期为每篇文章。这将成为cat
别名,然后将其与arguments
表左键连接在一起,就像在原始查询中一样。如果需要,您可以在末尾添加LIMIT 10
;我不知道该怎么做。
请注意,如果某个类别的最新日期有一个平局,那么您将为每个类别获得不止一行。如果可能发生平局,你需要以某种方式打破平局,例如使用描述或ID。让我知道如果是这样,我会更新我的答案。
回答:
SELECT ART.*, ARG.* FROM ARTICLE AS ART
INNER JOIN RD_AGRUEMENT AS ARG
ON ARG.ID = ART.ID
WHERE (ID, DATE) IN
(SELECT ID, MAX(DATE) FROM ARTICLE GROUP BY ID)
以上是 加入两个MySQL表,并从类别导致 的全部内容, 来源链接: utcz.com/qa/257983.html