2015-06-08 79 views
2

我要顯示這樣的查詢結果:如何顯示MYSQL查詢結果column_1今年查詢,column_2查詢一年前?

| Who_was_born_this_year | Who_was_born_year_ago | 
___________________________________________________ 
|  x     | y     |  
|  x     | y     | 

其中x將顯示誰出生在今年人姓名和y將顯示誰天生一年前

百姓餐桌結構人名稱:

ID people | ID Gender | Name | Birthday 
    _________________________________________ 
    1   | 1   | John | 18-07-2015 
    2   | 1   | Stu | 12-01-2014 
    3   | 2   | Leslie | 10-03-2014 

所有日期格式爲DD-MM-YYYY

我怎麼能與查詢實現這一目標?

謝謝

回答

0

你可以試試這個:

SELECT 
    IF (YEAR(CURDATE()) = YEAR(Birthday), Name, '') Who_was_born_this_year, 
    IF (YEAR(CURDATE())-1 = YEAR(Birthday), Name, '') Who_was_born_year_ago 
From people 
; 

,但您會收到類似:

| Who_was_born_this_year | Who_was_born_year_ago | 
___________________________________________________ 
| John     |      | 
|       | Stu    | 
|       | Leslie    | 

,我想,這不是你想要的到底是什麼?
但這是最好的情況,因爲我們沒有關鍵我們應該如何綁定今年和去年的數據......

或者:

SELECT 
(
    SELECT group_concat(Name) 
    FROM people 
    WHERE YEAR(CURDATE()) = YEAR(Birthday) 
) Who_was_born_this_year, 
(
    SELECT group_concat(Name) 
    FROM people 
    WHERE YEAR(CURDATE())-1 = YEAR(Birthday) 
) Who_was_born_year_ago 
; 

但在這種情況下,您會收到類似:

| Who_was_born_this_year | Who_was_born_year_ago | 
___________________________________________________ 
| John     |      | 
|       | Stu,Leslie   | 

,我再次想,這不是你想要的到底是什麼?

我想以您希望的方式表示數據不是最好的想法......

0

您可以使用以下查詢此查詢可能hel p你,

SELECT 
    (CASE YEAR(Birthday) WHEN YEAR(curdate()) THEN name ELSE NULL END) as Who_was_born_this_year, 
    (CASE YEAR(Birthday) WHEN YEAR(curdate() - interval 1 year) THEN name ELSE NULL END) as Who_was_born_year_ago 
FROM people WHERE YEAR(Birthday)IN (YEAR(curdate() - interval 1 year),YEAR(curdate())); 

您還可以通過選擇CURENT年和上年首先

優化這個查詢