찾다

 >  Q&A  >  본문

한 테이블의 user_Id를 다른 테이블의 parent_id에 삽입하고 싶은데 두 테이블 사이에 공통 값이 없습니다.

<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粉323224129P粉323224129482일 전408

모든 응답(1)나는 대답할 것이다

  • P粉596161915

    P粉5961619152023-07-31 00:45:30

    귀하의 설명에 따라 사용자 테이블과 상위 테이블 간의 일치하는 값을 기반으로 하위 테이블의 parent_id 열을 업데이트하려고 합니다. 사용자 테이블의 usersId와 상위 테이블의 user_id를 사용하여 하위 테이블의 parent_id를 업데이트하려고 합니다.

    다음 SQL 쿼리를 사용하여 이 작업을 수행할 수 있습니다.


    으아악

    설명:

    1. UPDATE 문은 Children 테이블을 업데이트하는 데 사용되며 별칭을 c로 지정합니다.
    2. 우리는 하위 쿼리를 사용하여 사용자 테이블의 이메일에 해당하는(mEmail 또는 fEmail과 일치하는) 상위 테이블의 user_id를 찾습니다.
    3. JOIN 조건은 이메일 일치를 기반으로 사용자와 상위 테이블을 조인합니다.
    4. WHERE 절은 parent_id가 현재 NULL인 Children 테이블의 행만 업데이트하도록 보장합니다(이렇게 하면 일부 상위 ID를 이미 삽입한 경우 해당 행을 덮어쓰는 것을 방지할 수 있습니다).
    5. LIMIT 1은 하위 레코드당 하나의 parent_id를 업데이트하도록 보장합니다. 하위 레코드당 여러 레코드를 업데이트해야 하는 경우 이 값을 조정할 수 있습니다.

    안전을 위해 업데이트 쿼리를 실행하기 전에 데이터베이스를 백업하세요. ,

    데이터베이스 항목이 증가함에 따라 성능에 대한 우려가 있는 경우, 사용자 테이블의 이메일, 상위 테이블의 mEmail 및 fEmail과 같은 관련 열에 적절한 인덱스가 있는 한 이 쿼리는 효율적입니다. 인덱스는 특히 대규모 데이터 세트로 작업할 때 조회 프로세스 속도를 크게 향상시킵니다.


    회신하다
    0
  • 취소회신하다