繁体   English   中英

MySQL 将子查询转换为 join

[英]MySQL converting subquery to 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

GROUP BY 不是必需的,因为您没有使用任何聚合函数。 您可以使用 DISTINCT 拥有唯一条目

我认为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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM