ホームページ  >  に質問  >  本文

MySQLで行インデックスとハードコードされた値を使用して列全体を更新する方法

<p><strong>email</strong> 列全体を行インデックス email@gmail.com で更新したいと考えています。 </p> <p>これは私のテーブルのデータです</p> <テーブルクラス="s-テーブル"> <頭> <tr> id <th>メール</th> </tr> </頭> <みんな> <tr> 12 <td>abc@gmail.com</td> </tr> <tr> 23 <td>pqr@gmail.com</td> </tr> </tbody> </テーブル> <p>これが私が望む出力です</p> <テーブルクラス="s-テーブル"> <頭> <tr> id <th>メール</th> </tr> </頭> <みんな> <tr> 12 <td>1email@gmail.com</td> </tr> <tr> 23 <td>2email@gmail.com</td> </tr> </tbody> </テーブル> <p>以下のクエリを試しましたが、期待した出力が得られませんでした。 </p> <pre class="brush:php;toolbar:false;">;C を使用 ( rowid として email,row_number() over(ID 昇順で並べ替え) を選択します カスから ) アップデートC set email = rowid 'email@gmail.com'</pre> <p>これは単なる 3 行ではなく、<code>cus</code> テーブルには 500 行以上あります。ループを必要としない解決策を誰かが教えてくれれば良いのですが。 SQL クエリの作成を手伝ってください。ありがとう。 </p>
P粉362071992P粉362071992443日前420

全員に返信(2)返信します

  • P粉201448898

    P粉2014488982023-08-27 14:25:34

    これは機能するようですが、結合を使用する必要のない、より洗練されたソリューションがあると思います...

    リーリー ###総テスト### リーリー

    返事
    0
  • P粉885035114

    P粉8850351142023-08-27 00:04:35

    おそらくこれがあなたがやりたいことです:

    リーリー

    更新するテーブル (cus) を Ccte に接続し、それに応じて更新します。

    こちらがデモです

    @QisM は、email が一意でない場合の構文に関する懸念を提起しましたが、OP では言及されていないため、email が実際に一意でない場合、これは次のとおりであることに同意します。解決策ではありません。そこで、構文を少し変更しました:

    リーリー

    Now cteid に設定し、 JOIN C ON .. 条件に id と一致するチェックを追加しました。テスト後、メールが一意でない場合、 これにより問題が解決されます。

    返事
    0
  • キャンセル返事