嗨,所以我有一個包含多個表的資料庫,其中包含不同的記錄,
- table_1
- student_name
- student_id
- id
- note
- ...
- table_2
- id
- leave
- ...
leave 當前包含學生休假的所有天數的記錄。
表 2 的樣本資料按要求
| ID | 離開 | ... |
|---|---|---|
| 675 | 2011-05-04 | ... |
| 675 | 2012-04-15 | ... |
| 675 | 2021-06-23 | ... |
| 345 | 2019-10-14 | ... |
| 345 | 2011-04-05 | ... |
| 345 | 2019-02-13 | ... |
所以我的問題是我如何左加入表格并回傳學生的最后休假日期,而不是獲取該特定學生的所有休假日期。
這是我得到的當前輸出
| 姓名 | ID | 筆記 | 最后缺席 | ... |
|---|---|---|---|---|
| 約翰·多伊 | 675 | 好學生 | 2011-05-04 | ... |
| 約翰·多伊 | 675 | 好學生 | 2012-04-15 | ... |
| 約翰·多伊 | 675 | 好學生 | 2021-06-23 | ... |
| 杰克·斯派洛 | 345 | 普通學生 | 2019-10-14 | ... |
| 杰克·斯派洛 | 345 | 普通學生 | 2019-10-14 | ... |
| 杰克·斯派洛 | 345 | 普通學生 | 2019-02-13 | ... |
| 瑞安雷諾茲 | 567 | 低于平均水平的學生 | 2011-07-22 | ... |
這是我的預期輸出。
| 姓名 | ID | 筆記 | 最后缺席 | ... |
|---|---|---|---|---|
| 約翰·多伊 | 675 | 好學生 | 2021-06-23 | ... |
| 杰克·斯派洛 | 345 | 普通學生 | 2019-10-14 | ... |
| 瑞安雷諾茲 | 567 | 低于平均水平的學生 | 2011-07-22 | ... |
感謝所有幫助并提前致謝。
uj5u.com熱心網友回復:
正如 Martin 已經評論過的,您需要使用聚合查詢。由于日期按字典順序進行有效排序,因此一組日期中最近的日期是其最大值。因此,您需要使用 MAX() 聚合器。由于您想獲取每個學生的最新日期,因此需要按學生對查詢進行分組。由于 MySQL 通常不希望您列印不在 GROUP BY 子句中的列,因此您需要將 TABLE_1 中的所有列添加到該子句中。這應該做你想做的:
SELECT TABLE_1.NAME, TABLE_1.ID, TABLE_1.NOTE, MAX(TABLE_2.LEAVEDATE) AS last_absent
FROM TABLE_1 LEFT JOIN TABLE_2 ON TABLE_1.ID = TABLE_2.ID
GROUP BY TABLE_1.ID, TABLE_1.NAME, TABLE_1.NOTE;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331515.html
上一篇:MariaDB/MysqlSELECTfrom-towithSubquery
下一篇:在java中實作一個編碼器
