我想將一個表中的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,此查詢應該是高效的。索引將顯著加快查找過程,尤其是在處理大型資料集時。