如何显示MYSQL查询结果column_1今年查询,column_2是在一年前查询?

时间:2015-06-08 09:19:53

标签: mysql sql

我想显示如下的查询结果:

|  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

如何通过查询实现这一目标?

谢谢

2 个答案:

答案 0 :(得分: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         |

我再次假设这不是你想要的......

我认为以您希望的方式表示数据不是最好的主意......

答案 1 :(得分:0)

您可以使用以下查询此查询可以帮助您,

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()));

您还可以通过首先选择一年和上一年来优化此查询