0

我有两个表:产品新闻——新闻是关于产品的,所以新闻表有行 pid(用于产品 id),新闻有不同的日期,所以可以按日期排序。而且我需要一个查询来显示产品表中的一些数据,并附有一个和最新的新闻标题和日期 - 我正在尝试使用这样的查询:

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 运算符而不是子查询?

4

2 回答 2

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
于 2012-04-07T12:19:04.997 回答
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
于 2012-04-07T13:08:22.880 回答