簡體   English   中英

MySQL:兩個表共享公共的“日期”列,如何在JOIN之后一起對日期進行ORDER?

[英]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.

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