簡體   English   中英

MySQL 只加入最新行

[英]MySQL join only latest row

我有 3 個具有以下列名稱的表:

餐廳:

  • id、姓名、美食、地址、image_file

評論:

  • id、restaurant_id(外鍵)、user_id(外鍵)、header、內容、posted_at、modified_at

用戶:-id、用戶名、email、密碼、權限

在我的主頁上的 PHP 項目中,如果有任何評論,我想顯示所有帶有最新評論的餐廳。 有人可以幫助我如何在單個查詢和單個 foreach 循環中做到這一點嗎? 我已經嘗試使用子查詢進行左連接,但無法解決重復行的問題。 提前致謝!

嘗試這個

SELECT *
  FROM restaurants
  LEFT JOIN
     (
       SELECT restaurant_id AS restId, MAX(posted_at) AS lastTime
         FROM reviews
        GROUP BY restaurant_id
     ) AS last_reviews
    ON last_reviews.restId = restaurants.id
  LEFT JOIN reviews
    ON reviews.posted_at = last_reviews.lastTime
   AND reviews.restaurant_id = restaurants.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM