使用strcmp结果更新查询

时间:2013-05-04 12:38:04

标签: mysql

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

选择查询是:

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

我想解决的问题是,对字段现在包含不同顺序的对名称。例如,对于同一对的“Bill - Dennis”和“Dennis - Bill”出现在不同的记录中,我希望对名称始终首先使用“较小”名称,以便我可以计算找到特定二人组的时间

如果需要更多信息,请与我们联系。

提前致谢。

壁立

1 个答案:

答案 0 :(得分: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))

如果你只需要在播放器1大于播放器2的情况下与播放器2一起使用swith player1,你可以使用这个UPDATE查询:

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

小提琴是here