MySQL将子查询转换为联接
是否可以将此子查询转换为joinMySQL将子查询转换为联接,mysql,Mysql,是否可以将此子查询转换为join SELECT `news`.`newsId`, (SELECT `comments`.`text` FROM `comments` WHERE `comments`.`newsId` = `news`.`newsId` order by `comments`.`date` desc limit 1) FROM `news` , `comment
SELECT `news`.`newsId`,
(SELECT `comments`.`text`
FROM `comments`
WHERE `comments`.`newsId` = `news`.`newsId`
order by `comments`.`date` desc
limit 1)
FROM `news` , `comments`
where `news`.`newsId` = `comments`.`newsId`
GROUP BY `news`.`newsId`
order by news.date desc;
我认为你想做的是:
SELECT n.newsId FROM news n
INNER JOIN comments c ON c.newsId = n.newsId
ORDER BY c.date DESC, n.date
LIMIT 1
分组依据不是必需的,因为您没有使用任何聚合函数。您可以使用独特的条目,我假设
newsId
是唯一的
SELECT `news`.`newsId`,
`comments`.`text`
FROM `news`
CROSS APPLY (SELECT `comments`.`text`
FROM `comments`
WHERE `comments`.`newsId` = `news`.`newsId`
order by `comments`.`date` desc
limit 1) cm
order by news.date desc;
你试过什么?你有我们的数据吗?