我想将一个表中的user_Id插入到另一个表的parent_id中,但是这两个表之间没有共同的值。
P粉323224129
2023-07-30 13:35:25
<p style="white-space:normal;">我目前有三个表格:</p><p style="white-space:normal;">users表格 // 数据在注册时插入<pre class="brush:php;toolbar:false;">usersId //PRIMARY KEY
userfName
userlName
userUid
email
userPwd
dateTime</pre>
<p><code>parent</code> table</p>
<pre class="brush:php;toolbar:false;">id //PRIMARY KEY
mFname
mLname
mEmail
mPhone
fFname
fLname
fEmail
fPhone
addressL1
addressL2
city
stateAbbr
zip
created_at
user_id //FOREIGN KEY</pre>
<p>我使用了users表格中的email列以及mEmail或fEmail来将usersId插入到parents表格中。</p>
<p><code>Children</code> Table</p>
<pre class="brush:php;toolbar:false;">child_id //PRIMARY KEY
child1Name
dobChild1
ageChild1
child2Name
dobChild2
ageChild2
child3Name
dobChild3
ageChild3
child4Name
dobChild4
ageChild4
child5Name
dobChild5
ageChild5
child6Name
dobChild6
ageChild6
child7Name
dobChild7
ageChild7
child8Name
dobChild8
ageChild8
child9Name
dobChild9
ageChild9
child10Name
dobChild10
ageChild10
parent_id //FOREIGN KEY</pre>
<p>在儿童桌和其他两个表之间没有共同的数值。我的期望是在用户表和父表之间进行验证,如果用户表的usersId和父表的user_id相等,则将该值插入到children表的parent_id中。这种操作是否可行?我考虑使用交叉连接(cross join),但我担心随着数据库中的条目数量增长,性能会受到影响。</p>
<pre class="brush:php;toolbar:false;">SELECT usersId FROM users;
SELECT user_id FROM parent;
UPDATE children (parent_Id) INNER JOIN parent ON children.parent_id = users.usersId
UPDATE children
SELECT usersId
FROM users
cross JOIN children.parent_id ON users.usersId = children.parent_id
UPDATE children
INNER JOIN users
(INNER JOIN parent ON users.userId = parent.userId)
ON users.usersId = parent.user_id
SET children.parent_id = parent.user_Id;</pre>
<p>我已经尝试了每一种方法,但都没有成功。我还尝试改变连接的顺序,但也没有用。非常感谢您提供的任何帮助。</p>
根据您的描述,您希望根据用户表和父母表之间的匹配值,更新子表中的 parent_id 列。您想要使用用户表的 usersId 和父母表的 user_id 来更新子表中的 parent_id。
您可以使用以下 SQL 查询来实现:
解释:
在运行任何更新查询之前,请务必备份数据库,以确保安全。、
至于您对于数据库条目增长时性能的担忧,只要在相关列上有适当的索引,例如 users 表中的电子邮件以及 parent 表中的 mEmail 和 fEmail,此查询应该是高效的。索引将显著加快查找过程,尤其是在处理大型数据集时。