1
我有兩個MySQL表成員和member_cards。會員卡的每個會員卡都可以有三種狀態。MySQL查詢找到最近的成員
- 活動=起始日期< =今天< = END_DATE
- 未來=今天<起始日期
- 過期= END_DATE <今天
成員表
id--------membership_number--------start_date-------------end_date
1--------**123**--------------------------------09-20-2014-----------09-20-2015
2--------**123**--------------------------------09-20-2015-----------09-20-2016
3--------**123**--------------------------------09-20-2016-----------09-20-2017
4--------**123**--------------------------------09-20-2017-----------09-20-2018
5--------**456**--------------------------------09-20-2013-----------09-20-2014
6--------**456**--------------------------------09-20-2014-----------09-20-2015
會員卡
id--------membership_id-------------start_date-------------end_date
1--------**1**--------------------------------09-20-2014-----------05-15-2015
2--------**1**--------------------------------09-20-2014-----------09-20-2015
3--------**2**--------------------------------09-20-2015-----------05-13-2016
4--------**2**--------------------------------09-20-2015-----------09-20-2016
5--------**3**--------------------------------09-20-2016-----------09-21-2016 (past)
6--------**3**--------------------------------09-20-2016-----------05-15-2017
7--------**3**--------------------------------09-20-2016-----------09-20-2017
8--------**4**--------------------------------09-20-2017-----------05-13-2017
9--------**4**--------------------------------09-20-2017-----------09-20-2018
10-------**5**--------------------------------09-20-2013-----------05-13-2014
11-------**5**--------------------------------09-20-2013-----------09-20-2014
12------**6**--------------------------------09-20-2014-----------05-13-2015
13-----**6**--------------------------------09-20-2014-----------09-20-2015
我想要檢索
- 所有活動+未來會員+(如果有一個特定的會員號碼,最後期滿的記錄沒有活動的或未來的成員)
其結果是:
id--------membership_number--------start_date-------------end_date
3--------**123**--------------------------------09-20-2016-----------09-20-2017
4--------**123**--------------------------------09-20-2017-----------09-20-2018
6--------**456**--------------------------------09-20-2014-----------09-20-2015
- 有效卡+(如果成員資格已過期,都綁到會員卡)
結果:
id--------membership_id-------------start_date-------------end_date
6--------**3**--------------------------------09-20-2016-----------05-15-2017
7--------**3**--------------------------------09-20-2016-----------09-20-2017
8--------**4**--------------------------------09-20-2017-----------05-13-2017
9--------**4**--------------------------------09-20-2017-----------09-20-2018
12------**6**--------------------------------09-20-2014-----------05-13-2015
13-----**6**--------------------------------09-20-2014-----------09-20-2015
每個表包含約20萬條記錄。我正在嘗試使用單個MySQL查詢使用UNION執行第二個查詢(對於member_cards)。有沒有更好的方法?
UNION結合了兩個表並對它們進行排序,我認爲UNION ALL的速度更快,因爲它不排序組合的表。 [來源](http://www.iheavy.com/2013/06/13/how-to-optimize-mysql-union-for-high-speed/) – Roy123
一個查詢不返回兩個結果集,所以你的問題目前尚不清楚。 –
啊,我的不好。我的意思是第二個結果(對於會員卡)。 –