あるテーブルの user_Id を別のテーブルのparent_idに挿入したいのですが、2 つのテーブル間に共通の値がありません。
P粉323224129
P粉323224129 2023-07-30 13:35:25
0
1
417
<p style="white-space:normal;">現在 3 つのテーブルがあります: </p><p style="white-space:normal;">users テーブル//データは登録中に挿入されます<pre class="brush:php;toolbar:false;">usersId //主キー ユーザー名 ユーザー名 ユーザーID Eメール ユーザーパスワード dateTime</pre> <p><code>親</code>テーブル</p> <pre class="brush:php;toolbar:false;">id //主キー ikB ミリリットル名 mメール 携帯電話 fname ファイル名 fメール fフォン 住所L1 アドレスL2 市 状態略称 ジップ 作成日 user_id //外部キー</pre> <p>users テーブルの email 列と mEmail または fEmail を使用して、usersId を親テーブルに挿入しました。 </p> <p><code>子</code>テーブル</p> <pre class="brush:php;toolbar:false;">child_id //主キー 子供1の名前 ドブ子供1 年齢子供1 子供2名 ドブ子2 年齢子供2 子供3名 ドブ子供3 年齢子供3 子供4の名前 ドブ子4 年齢子供4 子供5名 ドブ子供5 年齢子供5歳 子供6名 ドブ子供6 年齢子供6歳 子供7の名前 ドブ子7 年齢子供7歳 子供8名 ドブチャイルド8 年齢子供8歳 子供9名 ドブ子9 年齢子供9歳 子供10名 ドブ子10 年齢子供10歳 parent_id //外部キー</pre> <p>子のテーブルと他の 2 つのテーブルの間に共通の値はありません。私の期待は、users テーブルと親テーブルの間で検証を行い、users テーブルの usersId と親テーブルの user_id が等しい場合、その値を子テーブルのparent_id に挿入することです。これは可能でしょうか?クロス結合の使用を検討しましたが、データベース内のエントリ数が増えるとパフォーマンスが低下するのではないかと心配しています。 </p> <pre class="brush:php;toolbar:false;">ユーザーからユーザー ID を選択; 親から user_id を選択します。 UPDATE 子 (parent_Id) INNER JOIN 親 ON Children.parent_id = users.usersId 子を更新する ユーザー ID を選択します ユーザーから クロス JOIN Children.parent_id ON users.usersId = Children.parent_id 子を更新する INNER JOIN ユーザー (INNER JOIN 親 ON users.userId =parent.userId) ON users.usersId =parent.user_id SET Children.parent_id =parent.user_Id;</pre> <p>あらゆる方法を試しましたが、成功しませんでした。接続の順序を変更してみましたが、それも機能しませんでした。ご協力をよろしくお願いいたします。 </p>
P粉323224129
P粉323224129

全員に返信(1)
P粉596161915

あなたの説明によると、ユーザーテーブルと親テーブルの間の一致する値に基づいて、子テーブルのparent_id列を更新したいとのことです。子テーブルのparent_idを、usersテーブルのusersIdと親テーブルのuser_idで更新したいと考えています。

これは、次の SQL クエリを使用して実行できます:


リーリー

説明:

  1. UPDATE ステートメントは、Children テーブルを更新するために使用され、テーブルに c というエイリアスを付けます。
  2. サブクエリを使用して、users テーブル内の電子メール (mEmail または fEmail に一致) に対応する親テーブル内の user_id を検索します。
  3. JOIN 条件は、電子メールの一致に基づいてユーザーと親テーブルを結合します。
  4. WHERE 句により、parent_id が現在 NULL である Children テーブル内の行のみが更新されるようになります (これにより、すでに親 ID を挿入している場合に上書きが回避されます)。
  5. LIMIT 1 では、子レコードごとに 1 つのparent_id が更新されます。子レコードごとに複数のレコードを更新する必要がある場合は、この値を調整できます。

安全のため、更新クエリを実行する前に必ずデータベースをバックアップしてください。 ,

データベース エントリの増加に伴うパフォーマンスに関する懸念については、users テーブルの email、親テーブルの mEmail と fEmail など、関連する列に適切なインデックスがある限り、このクエリは効率的であるはずです。 。インデックスを使用すると、特に大規模なデータ セットを扱う場合に、検索プロセスが大幅に高速化されます。


いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート