MySQL使用另一个表中的一个有序结果离开了连接

时间:2012-04-07 12:09:03

标签: mysql left-join

我有两个表:产品新闻 - 新闻是关于产品所以新闻表有行pid(对于产品ID),新闻有不同的日期所以它可以按日期订购。 我需要一个查询来显示产品表中的一些数据加入ONE和LATEST新闻标题和附加日期 - 我正在尝试使用这样的查询:

SELECT products.product_title, products.`product_key`,
news.`news_date`, news.`news_text` FROM products LEFT JOIN
news ON products.`product_key`= (SELECT news.`pid` FROM news
WHERE news.`pid` = products.`product_key`
ORDER BY news.`news_date` DESC LIMIT 1)
ORDER BY products.`product_title`

但它无法正常工作,可能我应该使用GROUP BY运算符而不是子查询?

2 个答案:

答案 0 :(得分:1)

这是UNTESTED,并且如果结果无效,则愿意编辑。

SELECT  a.product_key, a.product_title, 
        b.news_text, MAX(b.news_date)
FROM products a LEFT JOIN news b
        on a.product_key = b.pid
GROUP BY a.product_key, a.product_title, b.news_text

答案 1 :(得分:1)

终于找到了 - 正确的做法是从第二个表中获取MAX行值,然后将其添加到WHERE条件中:

SELECT products.product_title, products.product_key, news.news_date,
news.news_text FROM products LEFT JOIN news ON products.product_key= news.pid
WHERE news.news_date = (SELECT MAX(news.news_date) FROM news WHERE news.pid = products.product_key) ORDER BY products.product_key