首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >mySQL匹配日期,并在连接时返回null

mySQL匹配日期,并在连接时返回null
EN

Stack Overflow用户
提问于 2018-10-23 07:50:58
回答 1查看 25关注 0票数 1

我正在尝试结合一些NBA数据,篮下得分和高级球员的统计数据。我现在得到的查询是:

select boxes.GNO, boxes.NAME, boxes.DATE, advstat.YEAR, advstat.NAME, advstat.AGE
from boxes left join advstat on boxes.NAME=advstat.NAME
group by boxes.NAME, boxes.GNO having boxes.GNO = 1;

boxes.GNO=1只是在这一点上限制返回的数据,最终我将返回boxes表中所有游戏的数据。

使用上面的查询,我得到了以下输出:

+------+------------------+------------+------+------------------+------+
| GNO  | NAME             | DATE       | YEAR | NAME             | AGE  |
+------+------------------+------------+------+------------------+------+
|    1 | Al Horford       | 2017-10-17 | 2008 | Al Horford       |   21 |
|    1 | Aron Baynes      | 2017-10-17 | 2013 | Aron Baynes      |   26 |
|    1 | Derrick Rose     | 2017-10-17 | 2009 | Derrick Rose     |   20 |
|    1 | Dwyane Wade      | 2017-10-17 | 2004 | Dwyane Wade      |   22 |
|    1 | Gordon Hayward   | 2017-10-17 | 2011 | Gordon Hayward   |   20 |
|    1 | Iman Shumpert    | 2017-10-17 | 2012 | Iman Shumpert    |   21 |
|    1 | Jae Crowder      | 2017-10-17 | 2013 | Jae Crowder      |   22 |
|    1 | Jaylen Brown     | 2017-10-17 | 2017 | Jaylen Brown     |   20 |
|    1 | Jayson Tatum     | 2017-10-17 | NULL | NULL             | NULL |
|    1 | Jeff Green       | 2017-10-17 | 2008 | Jeff Green       |   21 |
|    1 | JR Smith         | 2017-10-17 | NULL | NULL             | NULL |
|    1 | Kevin Love       | 2017-10-17 | 2009 | Kevin Love       |   20 |
|    1 | Kyle Korver      | 2017-10-17 | 2004 | Kyle Korver      |   22 |
|    1 | Kyrie Irving     | 2017-10-17 | 2012 | Kyrie Irving     |   19 |
|    1 | LeBron James     | 2017-10-17 | 2004 | LeBron James     |   19 |
|    1 | Marcus Smart     | 2017-10-17 | 2015 | Marcus Smart     |   20 |
|    1 | Semi Ojeleye     | 2017-10-17 | NULL | NULL             | NULL |
|    1 | Shane Larkin     | 2017-10-17 | 2014 | Shane Larkin     |   21 |
|    1 | Terry Rozier     | 2017-10-17 | 2016 | Terry Rozier     |   21 |
|    1 | Tristan Thompson | 2017-10-17 | 2012 | Tristan Thompson |   20 |
+------+------------------+------------+------+------------------+------+

这几乎是正确的..但是,我需要advstat.YEAR来匹配年份(boxes.DATE)。如果我加上..。where year(boxes.DATE)=advstat.YEAR,排除空数据,这不是我想要的。我需要的表看起来像上面做的,只有在两个表之间正确排列的年份。

任何帮助都将不胜感激!干杯!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-23 07:55:10

这是你想要的吗?

select b.GNO, b.NAME, b.DATE, s.YEAR, s.NAME, s.AGE
from boxes b left join
     advstat s
     on b.NAME = s.NAME and year(b.date) = s.year
where b.GNO = 1
group by b.NAME, b.GNO ;

请注意,在group by之前进行过滤通常更有效,因此我建议使用where而不是having

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52939184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档