我有两个表:产品和新闻 - 新闻是关于产品所以新闻表有行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运算符而不是子查询?
答案 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