更新游戏统计信息。 SQL

时间:2013-03-04 15:37:36

标签: mysql sql

我有3个文件的csv导入程序,以便我的游戏统计数据可以快速更新。过了一会儿,我意识到它正在将相同的数据插入到数据库的多个列中。

我正在尝试使用UPDATE语句更新其中一个表中的数据。

我需要修复的五个列是data1, data2, data3, hits, totalnum.

如果用户是有效的玩家,那么我需要将匹配和totalnum设置为0 如果他们不是有效的播放器,则需要data1, data2并将data3设置为0。

要检查用户是否有效,我需要访问用户表并查找用户详细信息并检查is_valid列。

我可能需要为此进行2次查询,1次针对有效用户,1位针对无效用户。

到目前为止我没有检查用户表,我不知道该怎么做。

UPDATE game_stats
SET data1 = 0,
data2=0,
data3=0
WHERE data1 <= 1 AND data2 <= 1 AND data3 <= 1
  

用户表
Id,fname,lname,is_valid,details

     

Game_stats
Id,userid,data1,data2,data3,hits,totalnum

请有人帮我这样做吗?

1 个答案:

答案 0 :(得分:4)

这应该排除有效用户

UPDATE game_stats gs
SET gs.data1 = '0', gs.data2= '0', gs.data3= '0'
WHERE exists
(SELECT u.id
FROM users u 
WHERE u.is_valid='true' AND
u.id = gs.userid)

这应该排除无效用户

UPDATE game_stats gs
SET gs.hits = '0', gs.totalnum = '0'
WHERE exists
(SELECT u.id
FROM users u
WHERE u.is_valid !='true' AND
u.id = gs.userid)

希望有所帮助