MySQL将子查询转换为联接

MySQL将子查询转换为联接,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

是否可以将此子查询转换为join

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;

你试过什么?你有我们的数据吗?