簡體   English   中英

從 MySQL 中的連接表中選擇最近的行

[英]selecting most recent row from joined table in MySQL

我有兩個表,Project 和 Projectnote

project 和 projectnote 之間存在一對多的關系。

我希望能夠列出我的項目和 select 基於 id 的最新項目注釋。

這是否可以在 Mysql 查詢中做到,我想不通。

謝謝你的幫助!

編輯:到目前為止,我有一個連接兩個表的基本查詢(如下)。 但是,這只選擇存在注釋的項目,並且我得到多行,每個項目有多個注釋。

SELECT `driver_checkins`.*, `driver_trips`.`id` AS `trip_id`, `driver_trips`.`trip_num` AS `trip_num`, `driver_trips`.`status` AS `trip_status`, `driver_trips`.`ride_date` AS `ride_date`, `driver_trips`.`today_date` AS `trip_today_date`, `driver_trips`.`pick_up_time` AS `pick_up_time`, `driver_trips`.`d_time` AS `d_time`, `driver_trips`.`trip_type` AS `trip_type`
FROM `driver_checkins`
LEFT JOIN `driver_trips` ON `driver_trips`.`driver_id` = `driver_checkins`.`driver_id` WHERE `checkin_status` = 1 AND `booking_status` = 0;

使用GROUP BY子句和GROUP_CONCAT function 應該可以解決問題。

我假設“driver_checkins”是您的“Project”表,“driver_trips”是您的“Projectnote”表。

SELECT `driver_checkins`.*, GROUP_CONCAT(`driver_trips`.`id`, `driver_trips`.`status` ORDER BY `driver_trips`.id DESC SEPARATOR " --- " LIMIT 3)
FROM `driver_checkins`
LEFT JOIN `driver_trips` ON `driver_trips`.`driver_id` = `driver_checkins`.`driver_id`
WHERE `checkin_status` = 1 AND `booking_status` = 0
GROUP BY `driver_checkins`.id;

這應該顯示每個 driver_checkin 的最后 3 個 driver_trips 的 id 和狀態,用“ --- ”分隔。

需要考慮的事情:雖然在許多情況下按 id 排序將按時間順序工作,但最好添加一個時間戳列(例如,稱為created )而不是按時間順序排序。

暫無
暫無

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

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