我已经将Retrosheet (可追溯到1952年的逐场棒球数据库)数据导入到MySQL数据库中。有一个标识棒球比赛的GAME_ID字段。
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)的第一场游戏的所有数据。
SELECT * FROM games WHERE GAME_DATE <= ‘1992-06-23’.这不起作用,因为我不想从游戏“ATL199206231”中获取数据。
如何在查询中使用GAME_SEQ?
SELECT * FROM games WHERE GAME_DATE <= ‘1992-06-23’ and GAME_SEQ = 0这也行不通,因为我想要这个游戏BOS199008231 (1990年双头游戏的第二个游戏)
我想在日期的“GAME_SEQ”部分包含时间字段。
例如:
1992-06-23:00:00:00
1992-06-23:01:00:00有没有更好的方法?
发布于 2018-05-04 01:58:25
您可以像这样使用case语句:
SELECT * FROM games WHERE GAME_DATE <= ‘1992-06-23’ and GAME_SEQ =
case when GAME_DATE = ‘1992-06-23’ then 1 else 0 end 发布于 2018-05-04 01:58:32
如果你不想在那个日期玩游戏,那么使用:
SELECT * FROM games WHERE GAME_DATE < '1992-06-23'或者,也许你打算:
WHERE GAME_DATE < '1992-06-23' OR
(GAME_DATE < '1992-06-23' AND GAME_SEQ = 0)MySQL应该做正确的事情:
WHERE (GAME_DATE, GAME_SEQ) <= ('1992-06-23', 0)https://stackoverflow.com/questions/50161182
复制相似问题