> 데이터 베이스 > MySQL 튜토리얼 > 구문 오류를 방지하기 위해 MySQL 업데이트 문에서 하위 쿼리를 올바르게 사용하는 방법은 무엇입니까?

구문 오류를 방지하기 위해 MySQL 업데이트 문에서 하위 쿼리를 올바르게 사용하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-10-26 17:37:30
원래의
589명이 탐색했습니다.

How to Properly Use Subqueries in MySQL Update Statements to Avoid Syntax Errors?

업데이트 쿼리의 SQL 하위 쿼리 이해

MySQL에서 데이터를 업데이트할 때 하위 쿼리를 사용하여 다른 테이블의 값을 참조해야 하는 경우가 많습니다. 그러나 하위 쿼리가 외부 업데이트 문과 제대로 관련되지 않은 경우 오류가 발생할 수 있습니다.

다음 쿼리를 고려하세요.

Update Competition
Set Competition.NumberOfTeams =
(
SELECT count(*) as NumberOfTeams
FROM PicksPoints
where UserCompetitionID is not NULL
group by CompetitionID
) a
where a.CompetitionID =  Competition.CompetitionID
로그인 후 복사

이 쿼리는 오류 메시지와 함께 실패합니다.

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
near 'a where a.CompetitionID = Competition.CompetitionID' at line 8
로그인 후 복사

오류 해결

내부 하위 쿼리가 외부 업데이트 문의 where 절과 관련이 없기 때문에 오류가 발생합니다. 하위 쿼리가 실행되기 전에 대상 테이블(경쟁)에 where 조건이 적용됩니다. 이 문제를 해결하려면 다중 테이블 업데이트를 사용할 수 있습니다.

Update
  Competition as C
  inner join (
    select CompetitionId, count(*) as NumberOfTeams
    from PicksPoints as p
    where UserCompetitionID is not NULL
    group by CompetitionID
  ) as A on C.CompetitionID = A.CompetitionID
set C.NumberOfTeams = A.NumberOfTeams
로그인 후 복사

이 다중 테이블 업데이트는 Competition 테이블(별명 C)과 하위 쿼리(별칭 A)를 올바르게 조인하여 하위 쿼리의 값은 외부 업데이트 문에서 필터링하는 데 사용할 수 있습니다.

수정된 쿼리의 실시간 데모를 보려면 다음 SQL Fiddle을 참조하세요. http://www.sqlfiddle.com/#!2/a74f3/ 1

위 내용은 구문 오류를 방지하기 위해 MySQL 업데이트 문에서 하위 쿼리를 올바르게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿