我有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,detailsGame_stats
Id,userid,data1,data2,data3,hits,totalnum
请有人帮我这样做吗?
答案 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)
希望有所帮助