MySQL:基于多列加入

时间:2013-08-11 22:20:29

标签: mysql

我需要在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

http://sqlfiddle.com/#!2/c855b/1

2 个答案:

答案 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

http://sqlfiddle.com/#!2/c855b/16

答案 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上的获胜者列保持最新。难道你不能使用这个查询获得胜利者吗?