我有两张相互关联的桌子。
第一个表是tournaments
并具有以下字段
tournamentId
tournamentName
tournamentStatus
tournamentBuyIn
tournamentPrizePool
tournamentStart
tournamentEnd
tournamentDuration
tournamentParticipants
第二个表是
tourn_results
,它包含了上述锦标赛表的结果。它包含以下字段。result_id
tournamentId
tournamentName
tournamentDate
playerId
playerName
playerRank
prizeWon
tournamentParticipants
我添加了
tournamentName
和tournamentDate
字段,以便在搜索1000000多条记录时更轻松。以前,我使用以下代码来提取记录。SELECT r.playerName,
SUM(CASE WHEN r.playerRank = 1 THEN 1 ELSE 0 END) AS 'FirstPlace',
SUM(CASE WHEN r.playerRank = 1 THEN 1 ELSE 0 END)/Count(*)*100 AS 'WinPercent',
SUM(CASE WHEN r.playerRank = 2 THEN 1 else 0 end) AS 'SecondPlace',
SUM(CASE WHEN r.playerRank = 2 THEN 1 ELSE 0 END)/Count(*)*100 AS 'LosePercent',
COUNT(*) AS 'TotalGames'
FROM `tournaments` t
LEFT
JOIN `tourn_results` r
ON r.tournamentId = t.tournamentId
WHERE t.tournamentName LIKE "Royal Flush Daily"
AND t.tournamentStart BETWEEN '2015-06-08 00:00:00' AND '2015-06-08 23:59:59'
AND (r.playerRank = 1 OR r.playerRank = 2)
GROUP
BY r.playerName
ORDER
BY `FirstPlace` ASC
这对弄清结果起到了很好的作用。不过,如果
tournamentName
与我的查询匹配,我想看看每天有多少条记录。我想最好的方法是将tournamentDate and tournamentName
字段添加到结果数据库中。我现在需要从
tournamentName
表中复制tournaments
以及tournamentDate
如果BETWEEN '2015-06-08 00:00:00' AND '2015-06-08 23:59:59'
我甚至不知道怎么开始。
样本数据
为了节省空间,我把比赛缩写为“tú”
结果来自
tourn_results
result_id t_Id t_Name t_Date playerId playerName playerRank prizeWon t_part
1109985 407452 0000-00-00 3008 hvca410 2 0.000 2
应使用
tournaments
表中的信息进行更新t_Id t_Name t_Start t_End
407452 Royal Flush Daily 2015-07-16 03:02:00 2015-07-16
新的结果应该如下
result_id t_Id t_Name t_Date playerId playerName playerRank prizeWon t_part
1109985 407452 Royal Flush Daily 2015-07-16 3008 hvca410 2 0.000 2
最佳答案
目前还不完全清楚您想要完成什么,但是如果您只想用tournamentname和tournamented date更新tourn_results
表,可以使用以下查询来完成:
update tourn_results tr
join tournaments t on tr.tournamentId = t.tournamentId
set tr.tournamentName = t.tournamentName, tr.tournamentDate = t.tournamentEnd
where t.tournamentEnd BETWEEN '2015-07-16 00:00:00' AND '2015-07-16 23:59:59';
Sample SQL Fiddle
似乎没有必要复制这个名字,因为你可以从锦标赛表中得到它,至于日期,如果日期与获得结果的时间有某种关系,这不是更有意义吗?我猜还有另外一张桌子可以存放比赛的日期。也许那是你真正想要的?