이 UPDATE 문
Set T1.Percent as T1.Percent
^^
에 올바른 구문되지 않고이
Set T1.B as T2.B
^^
질문에 UPDATE 문에서 구문이 유효 보이지 않는 유효하지 않습니다 .
SET 지정 연산자는 As
키워드가 아닌 등호입니다.
및 T1.Percent = T1.Percent
은 현재 값으로 열을 설정하는 데 아무런 문제가 없으므로별로 의미가 없습니다.
예제 데이터와 원하는 최종 결과없이 실제로 달성하려는 내용이 확실하지 않습니다.
것은 멀티 테이블 UPDATE 문을 작성하려면, 내가 먼저 컬럼의 현재 값과 함께, 기본 (또는 고유) I 업데이트려고하고 테이블의 키를 반환하는 SELECT 명령문을 작성 업데이트, 당신은 두 개의 조인 할 수 있습니다처럼 문제가되는 SQL을 기반으로 열
에 할당하려고하는 새로운 값을 반환 표현, 그것은이 같은 보인다 수 :
SELECT ...
FROM table_a a
JOIN table_b b
ON b.s_id = a.id
JOIN table_c c
ON c.id = b.j_id
WHERE a.percent = 100
ORDER BY ...
을
(Google은 일대일, 일 대 다, 일대일, 일대일 등 어떤 것이 든 상관 없습니다. 우리는 단지 추측입니다.)
쿼리를 평가하고 테스트하려면 테이블의 기본 키가 포함됩니다. id
이 (불행하게도) Table_A와 Table_C의 기본 키라고 추측 할 것입니다. 튜플 (j_id,s_id)
은 Table_B
의 고유 키입니다.
업데이트 할 열 (현재 값 표시)과 열에 할당 할 새 값을 반환하는 식도 포함합니다. 이 같은
뭔가 :
SELECT a.id AS `a__id`
, a.percent AS `a__percent`
, b.j_id AS `b__j_id`
, b.s_id AS `b__s_id`
, c.id AS `c__id`
, c.b AS `c__b_old`
, b.b AS `c__b_new`
FROM table_a a
JOIN table_b b
ON b.s_id = a.id
JOIN table_c c
ON c.id = b.j_id
WHERE a.percent = 100
ORDER
BY c.id
, a.id
내가 그것을 테스트하고 그것이 내가 업데이트 할, 그리고 값이 c__b_new
표현 반환 된 Table_C
에서 행을 반환되고 있는지 만들 것 내가 원하는 값이다 Table_C
에 b
열에 할당하십시오.
일단 올바르게 작동하는 SELECT 문을 얻으면 (올바르게 작동하면 만 해당) 나는 다중 테이블 업데이트로 변환합니다.
SELECT ... FROM
부분을 키워드 UPDATE
으로 바꿉니다.
그리고 WHERE
절 앞에 새 값을 지정하는 SET
절을 추가하십시오. (나는 새 값을 반환하는 SELECT 목록에 사용 된 것과 같은 표현을 사용합니다.) 나는 멀티 테이블 UPDATE 작성에 대한 이동 방법의 단지 예입니다
UPDATE table_a a
JOIN table_b b
ON b.s_id = a.id
JOIN table_c c
ON c.id = b.j_id
SET c.b = b.b
WHERE a.percent = 100
. 보장이 없음이 진술은 귀하가 필요로하는 것에 효과가있을 것입니다. 다시 말하지만, 당신이 달성하고자하는 것이 명확하지 않습니다; 명세가 너무 모호하다. 그래서 우리는 단지 추측하고 있습니다.
@Will Hi Will은 오늘이나 내일 그렇게하려고 시도하며 복잡하고 간단한 예제 테이블을 만들어 간단하게 설명하려고합니다 .... – user3649739