[英]MySQL: Two tables share common “date” column, how to ORDER dates together after a JOIN?
我有兩個表,每個表都有一個名為“ date”的列。 我想加入它們,但在該常用格式的日期列上進行排序。
例如,這是我的兩個表:
Birthdays
+--------+---------+
| Date | Name |
+--------+---------+
| 03/10 | John |
+--------+---------+
| 09/24 | Sara |
+--------+---------+
Holidays
+--------+----------+
| Date | Title |
+--------+----------+
| 07/04 | July 4th |
+--------+----------+
| 12/25 | Xmas |
+--------+----------+
我想要做的就是加入它們並按日期排序。 常規的兩列排序無法正常工作,因為如果我未指定要查找的表的Date列,則會給我一個“模棱兩可”的錯誤,並且如果我在兩者之間指定了共同點,則將對它進行排序並對其進行子排序其他。
這是我想要使用該示例數據的輸出:
+--------+---------+----------+
| Date | Name | Title |
+--------+---------+----------+
| 03/10 | John | |
+--------+---------+----------+
| 09/24 | Sara | |
+--------+---------+----------+
| 07/04 | | July 4th |
+--------+---------+----------+
| 12/25 | | Xmas |
+--------+---------+----------+
任何有關如何執行此操作的建議將不勝感激,謝謝!
SELECT u.Date, b.Name, h.Title
FROM
(SELECT Date FROM Birthdays UNION SELECT Date FROM Holidays) u
LEFT JOIN Birthdays b ON u.Date=b.Date
LEFT JOIN Holidays h ON u.Date=h.Date
或者也許您也想使用例如GROUP_CONCAT對名稱列進行分組:
SELECT u.Date, GROUP_CONCAT(b.Name) Names, h.Title
FROM
(SELECT Date FROM Birthdays UNION SELECT Date FROM Holidays) u
LEFT JOIN Birthdays b ON u.Date=b.Date
LEFT JOIN Holidays h ON u.Date=h.Date
GROUP BY
u.Date, h.Title
假設多個名字可以共享同一個生日,並且一次只能有一個假期。
嘗試這個。
select date, name, title from (
select Date, name, '' as Title
from Birthdays
union
select Date, '', title
from Holidays ) table
order by date
使用UNION語句
SELECT * FROM (
SELECT `Date`, 'Birthday' AS `Type`, `Name` FROM `Birthday`
UNION
SELECT `Date`, 'Holiday' AS `Type`, `Title` FROM `Holiday`
) AS `AllSpecialDays` ORDER BY `Date`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.