1

我不确定如何将选择查询更改为更新。

选择查询是:

SELECT IF (strcmp( `player1`, `player2` ) >0, concat(player2, " - ", player1), pair) as GoodPair from scores

我要解决的问题是,pairs 字段现在包含顺序不同的对名称。例如,同一对的“Bill - Dennis”和“Dennis - Bill”出现在不同的记录中,我希望这对名称始终以“较小”的名称开头,以便我可以计算找到特定二人组的次数.

如果需要更多信息,请告诉我。

提前致谢。

比力

4

1 回答 1

0

您可以使用LEASTGREATEST函数:

SELECT
  CONCAT_WS(' - ', LEAST(payer1,player2), GREATEST(player1,player2)) as GoodPair
FROM
  scores

我也更喜欢使用CONCAT_WS来连接带有分隔符而不是 CONCAT 的字符串,但在这种特殊情况下它是相同的。

要创建更新查询,我会使用这个:

UPDATE scores
SET
  GoodPair = CONCAT_WS(' - ', LEAST(payer1,player2), GREATEST(player1,player2))

如果您只需要在 player1 大于 player2 的情况下将 player1 与 player2 交换,则可以使用此 UPDATE 查询:

UPDATE score
SET player1=LEAST(player1,player2),
    player2=GREATEST(player1,player2)
WHERE
  player1>player2

小提琴在这里

于 2013-05-04T12:41:07.467 回答