我有一個事件表。主持人可以在一天內創建多個活動。一些事件是反覆發生的,有些則不是。我有一個複雜的(對我來說)SELECT語句,我認爲它需要條件語句以及可能的子查詢,我不知道如何處理它。MySQL在按條件分列多列時選擇行
選擇優先級:
- 如果主機有在同一天一個以上事件和 這些日期的一個不重複(0),則只能選擇非經常性事件主機在那個日期。
- 如果主持人在同一日期有多個事件,並且該日期的所有事件都會重複發生,請選擇該日期的該主持人的所有事件。
- 如果主機在給定日期只有一個事件,請選擇它,而不管它是否重複發生。
下面是一個示例事件表:
+----+--------+---------+------------+-----------+
| id | hostid | title | start_date | recurring |
+----+--------+---------+------------+-----------+
| 1 | 1 | Event1A | 2016-10-01 | 1 |
| 2 | 1 | Event1B | 2016-10-01 | 0 |
| 3 | 1 | Event1C | 2016-10-02 | 0 |
| 4 | 1 | Event1D | 2016-10-02 | 1 |
| 5 | 1 | Event1E | 2016-10-02 | 1 |
| 6 | 1 | Event1F | 2016-10-03 | 1 |
| 7 | 1 | Event1G | 2016-10-03 | 1 |
| 8 | 1 | Event1H | 2016-10-04 | 1 |
| 9 | 1 | Event1I | 2016-10-05 | 0 |
| 10 | 2 | Event2A | 2016-10-01 | 1 |
| 11 | 2 | Event2B | 2016-10-01 | 0 |
| 12 | 2 | Event2C | 2016-10-02 | 1 |
| 13 | 2 | Event2D | 2016-10-03 | 0 |
+----+--------+---------+------------+-----------+
這裏是我想要的結果:
+----+--------+---------+------------+-----------+
| id | hostid | title | start_date | recurring |
+----+--------+---------+------------+-----------+
| 2 | 1 | Event1B | 2016-10-01 | 0 |
| 3 | 1 | Event1C | 2016-10-02 | 0 |
| 6 | 1 | Event1F | 2016-10-03 | 1 |
| 7 | 1 | Event1G | 2016-10-03 | 1 |
| 8 | 1 | Event1H | 2016-10-04 | 1 |
| 9 | 1 | Event1I | 2016-10-05 | 0 |
| 11 | 2 | Event2B | 2016-10-01 | 0 |
| 12 | 2 | Event2C | 2016-10-02 | 1 |
| 13 | 2 | Event2D | 2016-10-03 | 0 |
+----+--------+---------+------------+-----------+
下面是表中的SQL小提琴鏈接:
http://sqlfiddle.com/#!9/6427e/6
不錯!感謝您分享您的時間並幫助我。 – ctown4life