테이블의 열을 업데이트해야합니다. 갱신 값은 다른 테이블에서 검색되어야합니다. 나는 다음과 같은 오류 얻을무관 한 두 테이블의 쿼리 업데이트
update db1.t1 set location=(select countryName from db1.t1, db2.t2 where t1.num
between t2.beginNum AND t2.endNum limit 1)
: 내가 만든 쿼리 문이다 나는 FROM
절
update db1.t1 set location=(select countryName from db2.t2 where num
between t2.beginNum AND t2.endNum limit 1)
에서 테이블 이름 t1
을 제거 할 때 다음
Error Code: 1093 You can't specify target table t1 for update in FROM clause.
을, 쿼리 일 하지만 제대로 작동하는지 확실하지 않습니다. 내가 아는 한, 두 개 이상의 테이블에서 검색하는 경우 두 테이블을 FROM
절에 지정해야합니다. 내가 작업하는 두 개의 테이블에는 일반적인 열이 없습니다. 그러나 t2
의 두 값 사이에서 찾을 수있는 값은 t1
입니다. 두 번째 쿼리가 절대적으로 올바른 것입니까? 이 쿼리가 where
절 뒤에있는 num
절이 첫 번째 테이블에 있다는 것을 어떻게 알 수 있습니까? 나는 잘못된 값을 얻는 것이 두렵다.
데이터를 100 % 확실하게 확인할 수없는 경우 SQLFiddle.com으로 이동하여 동일한 테스트를 수행하여 쿼리가 작동하는지 확인하십시오. – jcho360
이후에 변경된 행의 양 쿼리를 실행 했습니까? 그것은 당신이 실제로 업데이 트하는 테이블에 대한 조건을 설정하지 않은 것 같습니다, 이것은 하위 쿼리가 하나의 레코드를 반환하는 경우 동일한 상황에있는 모든 레코드를 설정하려고 시도합니다 (나는 생각하건 없건간에), 그렇지 않으면 일치하지 않는 레코드 세트 크기로 인해 넘어 질 것입니다. 또한 2 개의 테이블에서 countryNames를 가져와야하는 경우이 시나리오에서 UNION ALL을 수행해야 모든 결과가 같은 열에 표시됩니다. –