我需要在MySQL中加入table_1和table_2,并比较哪个用户获得的奖金最多。然后用赢得的用户ID更新table_2.winner ..
表1
city user winnings
1 a 99
1 b 0
1 c 50
1 d 2
表2
city user_1 user_2 winner
1 a b a
1 c d 50
但是到目前为止,我正在努力弄清楚如何加入表格
SELECT table_1.winnings AS win_a, table_1.winnings AS win_b
FROM table_1, table_2
WHERE table_2.user_1 = table_1.user
AND table_2.user_2 = table_1.user
答案 0 :(得分:1)
您可以多次加入对象:
SELECT IF(user1.winnings > user2.winnings, "user1", "user2")
FROM table_2 games
JOIN table_1 user1 ON games.user_1 = user1.user
JOIN table_1 user2 ON games.user_2 = user2.user
答案 1 :(得分:0)
我刚刚使用了@skishore的查询,有点固定,因为它被绘制了。需要考虑抽奖的是
SELECT
case when user1.winnings > user2.winnings then user1.user
when user2.winnings > user1.winnings then user2.user
else null
end
FROM table_2 games
JOIN table_1 user1 ON games.user_1 = user1.user
JOIN table_1 user2 ON games.user_2 = user2.user
但除此之外,我仍然没有达到目的。我在评论@skishore回答中写了这个,但也粘贴在这里。考虑一下这个案例:
用户c赢得了与用户b一起玩的99场比赛,另一方面用户d赢得了与用户c一起玩的2场比赛。但谁将成为c和d之间的赢家? ç
第二个问题是 - 为什么你需要将它存储在一个单独的表中?奖金数量将动态变化,因此您必须创建触发器以使table2上的获胜者列保持最新。难道你不能使用这个查询获得胜利者吗?