首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有日期和序列字段的SQL查询

具有日期和序列字段的SQL查询
EN

Stack Overflow用户
提问于 2018-05-04 01:54:15
回答 2查看 36关注 0票数 0

我已经将Retrosheet (可追溯到1952年的逐场棒球数据库)数据导入到MySQL数据库中。有一个标识棒球比赛的GAME_ID字段。

代码语言:javascript
复制
First 3 fields: home team
Next 8 fields: YYYYMMDD
Last field: game sequence for double-headers, triple-headers.

6月23日在亚特兰大进行的ATL199206230 =比赛-6月23日在亚特兰大进行的双头ATL199206231 =比赛的第一场比赛-双头比赛的第二场比赛

因为我的大多数查询都需要日期,所以我创建了一个GAME_DATE列,并解析了GAME_ID字段以更新它。我还为sequence字段创建了一个GAME_SEQ字段。

假设我想在我的表中查询游戏日期小于或等于双头游戏(ATL199206230)的第一场游戏的所有数据。

代码语言:javascript
复制
SELECT * FROM games WHERE GAME_DATE <= ‘1992-06-23’.

这不起作用,因为我不想从游戏“ATL199206231”中获取数据。

如何在查询中使用GAME_SEQ?

代码语言:javascript
复制
SELECT * FROM games WHERE GAME_DATE <= ‘1992-06-23’ and GAME_SEQ = 0

这也行不通,因为我想要这个游戏BOS199008231 (1990年双头游戏的第二个游戏)

我想在日期的“GAME_SEQ”部分包含时间字段。

例如:

代码语言:javascript
复制
1992-06-23:00:00:00
1992-06-23:01:00:00

有没有更好的方法?

EN

回答 2

Stack Overflow用户

发布于 2018-05-04 01:58:25

您可以像这样使用case语句:

代码语言:javascript
复制
SELECT * FROM games WHERE GAME_DATE <= ‘1992-06-23’ and GAME_SEQ = 
case when GAME_DATE  = ‘1992-06-23’  then 1 else 0 end 
票数 0
EN

Stack Overflow用户

发布于 2018-05-04 01:58:32

如果你不想在那个日期玩游戏,那么使用:

代码语言:javascript
复制
SELECT * FROM games WHERE GAME_DATE < '1992-06-23'

或者,也许你打算:

代码语言:javascript
复制
WHERE GAME_DATE < '1992-06-23' OR
      (GAME_DATE < '1992-06-23' AND GAME_SEQ = 0)

MySQL应该做正确的事情:

代码语言:javascript
复制
WHERE (GAME_DATE, GAME_SEQ) <= ('1992-06-23', 0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50161182

复制
相关文章

相似问题

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