あるテーブルの user_Id を別のテーブルのparent_idに挿入したいのですが、2 つのテーブル間に共通の値がありません。
P粉323224129
2023-07-30 13:35:25
<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>
あなたの説明によると、ユーザーテーブルと親テーブルの間の一致する値に基づいて、子テーブルのparent_id列を更新したいとのことです。子テーブルのparent_idを、usersテーブルのusersIdと親テーブルのuser_idで更新したいと考えています。
これは、次の SQL クエリを使用して実行できます:
リーリー説明:
安全のため、更新クエリを実行する前に必ずデータベースをバックアップしてください。 ,
データベース エントリの増加に伴うパフォーマンスに関する懸念については、users テーブルの email、親テーブルの mEmail と fEmail など、関連する列に適切なインデックスがある限り、このクエリは効率的であるはずです。 。インデックスを使用すると、特に大規模なデータ セットを扱う場合に、検索プロセスが大幅に高速化されます。