加入两个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

回到顶部