Py学习  »  DATABASE

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

Shaun • 5 年前 • 1127 次点击  

我试图结合一些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来匹配年份(box.date)。如果我加上.. 其中year(boxes.date)=advstat.year,则不包括空数据,这不是我想要的。我需要这张表看起来像上面那样,只是年份在两张表之间正确排列。

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40020
 
1127 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Gordon Linoff
Reply   •   1 楼
Gordon Linoff    6 年前

这就是你想要的吗?

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 .