我将继续发布我可怕的MySQL代码:
INSERT INTO monthlystats (id, server, time, uptime, players, rank)
VALUES (09126, 6, 0912, 302, 0, 1)
ON DUPLICATE KEY UPDATE uptime = if(302 > uptime, 302, uptime), if(0 > players, 0, players), if(1 > rank, 1, rank)
Run Code Online (Sandbox Code Playgroud)
好的,让我解释一下我在做什么.
看起来我做的事情非常糟糕,我坦率地说不知道该怎么办.我试着把它弄好,但结果却是一团糟.
我希望有人可以引导我朝着正确的方向前进,并帮助我学习(以及其他任何想要学习的人)如何做这样的事情.谢谢.
ype*_*eᵀᴹ 33
您的查询似乎很好,但为了清晰起见,您可以改进它:
INSERT INTO monthlystats (id, server, time, uptime, players, rank)
VALUES (09126, 6, 0912, 302, 0, 1)
ON DUPLICATE KEY UPDATE
uptime = GREATEST(uptime, VALUES(uptime)),
players = GREATEST(players, VALUES(players)),
rank = GREATEST(rank, VALUES(rank))
Run Code Online (Sandbox Code Playgroud)
使用VALUES函数可以避免一些重复.其他的东西在你的查询中都很好
INSERT INTO monthlystats (id, server, time, uptime, players, rank)
VALUES (09126, 6, 0912, 302, 0, 1)
ON DUPLICATE KEY UPDATE uptime = if(VALUES(uptime) > uptime, VALUES(uptime), uptime)
Run Code Online (Sandbox Code Playgroud)