簡體   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