한 테이블의 user_Id를 다른 테이블의 parent_id에 삽입하고 싶은데 두 테이블 사이에 공통 값이 없습니다.
P粉323224129
P粉323224129 2023-07-30 13:35:25
0
1
323
<p style="white-space:normal;">현재 세 개의 테이블이 있습니다: </p><p style="white-space:normal;">users 테이블//등록 중에 데이터가 삽입됩니다. <pre class="brush:php;toolbar:false;">usersId //기본 키 사용자 이름 사용자 이름 userUid 이메일 사용자 비밀번호 날짜시간</pre> <p><code>상위</code>/p> <pre class="brush:php;toolbar:false;">id //기본 키 ikB mL이름 나이메일 엠폰 f이름 fL이름 f이메일 f전화 주소L1 주소L2 도시 상태Abbr 지퍼 생성_시간 user_id //외래 키</pre> <p>users 테이블의 email 열과 mEmail 또는 fEmail을 사용하여 usersId를 상위 테이블에 삽입했습니다. </p> <p><code>어린이</code> 테이블</p> <pre class="brush:php;toolbar:false;">child_id //기본 키 child1이름 dobChild1 나이어린이1 child2이름 dobChild2 나이어린이2 child3이름 dobChild3 나이어린이3 child4이름 dobChild4 나이어린이4 아이5이름 dobChild5 나이어린이5 child6이름 dobChild6 나이어린이6 child7이름 dobChild7 나이어린이7 child8이름 dobChild8 나이어린이8 child9이름 dobChild9 나이어린이9 child10이름 dobChild10 나이어린이10 parent_id //외래 키</pre> <p>어린이 테이블과 다른 두 테이블 사이에는 공통 값이 없습니다. 내 기대는 사용자 테이블과 상위 테이블 간의 유효성 검사를 수행하고 사용자 테이블의 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 列。您想要使用用户表的 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,此查询应该是高效的。索引将显著加快查找过程,尤其是在处理大型数据集时。


최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!