0

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

4

2 回答 2

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

于 2013-08-11T22:27:06.907 回答
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 answer的评论中写了这个,但也将它粘贴在这里。考虑以下情况:

用户 c 赢得了与用户 b 的 99 场比赛,另一方面,用户 d 赢得了与用户 c 的 2 场比赛。但谁将成为 c 和 d 之间的赢家?C

第二个问题是 - 为什么需要将其存储在单独的表中?中奖号码将动态变化,因此您必须创建触发器以使 table2 上的获胜者列保持最新。你不能用这个查询赢得胜利吗?

于 2013-08-11T22:47:13.533 回答