1

選択クエリを更新に変更する方法がわかりません。

選択クエリは次のとおりです。

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

私が解決しようとしている問題は、ペア フィールドに同じ順序ではないペア名が含まれていることです。たとえば、同じペアの「Bill - Dennis」と「Dennis - Bill」は異なるレコードに表示されます。特定のデュオが見つかった回数をカウントできるように、ペアの名前は常に「下位」の名前を最初に付けたいと考えています。 .

さらに情報が必要な場合は、お知らせください。

前もって感謝します。

ビリ

4

1 に答える 1

0

LEAST関数とGREATEST関数を使用できます。

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

CONCAT の代わりにCONCAT_WSを使用して文字列を区切り記号で連結することも好みますが、この特定のケースでは同じです。

更新クエリを作成するには、これを使用します。

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

プレイヤー 1 がプレイヤー 2 より大きい場合にプレイヤー 1 とプレイヤー 2 を交換する必要がある場合は、次の UPDATE クエリを使用できます。

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

フィドルはこちらです。

于 2013-05-04T12:41:07.467 に答える