Ich möchte die user_Id einer Tabelle in die parent_id einer anderen Tabelle einfügen, aber es gibt keine gemeinsamen Werte zwischen den beiden Tabellen.
P粉323224129
P粉323224129 2023-07-30 13:35:25
0
1
412
<p style="white-space:normal;">Ich habe derzeit drei Tabellen: </p><p style="white-space:normal;">users table//Daten werden bei der Registrierung eingefügt <pre class="brush:php;toolbar:false;">usersId //PRIMÄRSCHLÜSSEL userfName Benutzername userUid Email userPwd dateTime</pre> <p><code>parent</code> <pre class="brush:php;toolbar:false;">id //PRIMÄRSCHLÜSSEL ikB mLname mEmail mPhone fname fLname fEmail fTelefon AdresseL1 AdresseL2 Stadt stateAbbr Reißverschluss hergestellt in user_id //FÜR AUSLÄNDISCHER SCHLÜSSEL</pre> <p>Ich habe die E-Mail-Spalte aus der Benutzertabelle und mEmail oder fEmail verwendet, um die Benutzer-ID in die Elterntabelle einzufügen. </p> <p><code>Kinder</code> Tabelle</p> <pre class="brush:php;toolbar:false;">child_id //PRIMÄRSCHLÜSSEL kind1Name dobChild1 AlterKind1 kind2Name dobChild2 ageChild2 child3Name dobChild3 AlterKind3 child4Name dobChild4 AlterKind4 child5Name dobChild5 AlterKind5 child6Name dobChild6 AlterKind6 kind7Name dobChild7 AlterKind7 child8Name dobChild8 AlterKind8 child9Name dobChild9 AlterKind9 child10Name dobChild10 AlterKind10 parent_id //FOREIGN KEY</pre> <p>Es gibt keine gemeinsamen Werte zwischen der Kindertabelle und den beiden anderen Tabellen. Meine Erwartung besteht darin, eine Validierung zwischen der Benutzertabelle und der übergeordneten Tabelle durchzuführen. Wenn die Benutzer-ID der Benutzertabelle und die Benutzer-ID der übergeordneten Tabelle gleich sind, fügen Sie diesen Wert in die übergeordnete ID der untergeordneten Tabelle ein. Ist das möglich? Ich habe über die Verwendung eines Cross-Joins nachgedacht, befürchte aber, dass die Leistung sinkt, wenn die Anzahl der Einträge in der Datenbank zunimmt. </p> <pre class="brush:php;toolbar:false;">SELECTuserIdFROMuser; SELECT user_id FROM parent; UPDATE Kinder (parent_Id) INNER JOIN parent ONchildren.parent_id =users.usersId UPDATE Kinder Wählen Sie die Benutzer-ID aus VON Benutzern Kreuz JOIN Children.Parent_id ON Users.usersId = Children.Parent_id UPDATE Kinder INNER JOIN-Benutzer (INNER JOIN parent ON users.userId = parent.userId) ON users.usersId = parent.user_id SET children.parent_id = parent.user_Id;</pre> <p>Ich habe jede Methode ohne Erfolg ausprobiert. Ich habe auch versucht, die Reihenfolge der Verbindungen zu ändern, aber das hat auch nicht funktioniert. Vielen Dank für jede Hilfe, die Sie leisten können. </p>
P粉323224129
P粉323224129

Antworte allen(1)
P粉596161915

根据您的描述,您希望根据用户表和父母表之间的匹配值,更新子表中的 parent_id 列。您想要使用用户表的 usersId 和父母表的 user_id 来更新子表中的 parent_id。

您可以使用以下 SQL 查询来实现:


UPDATE Children c
SET c.parent_id = (
  SELECT p.user_id
  FROM users u
  JOIN parent p ON u.email = p.mEmail OR u.email = p.fEmail
  WHERE c.parent_id IS NULL -- Only update rows with NULL parent_id to avoid overwriting existing values
  LIMIT 1 -- Assuming you want to update one parent_id per child record; you may modify this as needed
);

解释:

  1. UPDATE 语句用于更新 Children 表,将其别名为 c。
  2. 我们使用子查询来查找与 users 表中的电子邮件(匹配 mEmail 或 fEmail)相对应的 parent 表中的 user_id。
  3. JOIN 条件基于电子邮件匹配连接 users 和 parent 表。
  4. WHERE 子句确保我们仅更新 parent_id 当前为 NULL 的 Children 表中的行(如果您已经插入了一些 parent ID,这样可以避免覆盖它们)。
  5. LIMIT 1 确保我们每个子记录更新一个 parent_id;如果您需要为每个子记录更新多个记录,可以调整此值。

在运行任何更新查询之前,请务必备份数据库,以确保安全。、

至于您对于数据库条目增长时性能的担忧,只要在相关列上有适当的索引,例如 users 表中的电子邮件以及 parent 表中的 mEmail 和 fEmail,此查询应该是高效的。索引将显著加快查找过程,尤其是在处理大型数据集时。


Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage