2014-11-20 4 views
1

인 특정 행을 사용하여 행을 업데이트 할 때 까다 롭지 만 해결할 수 없습니다.같은 테이블에서 다른 조건으로 행을 선택하는 조건이

여기에 나는 많은 행과 그 열 (ID, subject_id, topic_id, 설명, 그림, 차, 피카, chb, 픽크, chc, 픽크, chd, 픽크, 대답, 시도, 올바른, 레벨) ,, bookID로서, PAGENUMBER) 확인

지금은 topic_id는 LM하고 삽입 할 값이 동일한 테이블 질문에서 값을 받고 어디에서 테이블 질문을 업데이트 할 어디 topic_id은 뉴턴

이다 나는 3 개 쿼리를 시도 하지만 작동하지 않습니다 :

1.>

UPDATE questions 
SET 
id = newdata.id, 
subject_id = newdata.subject_id, 
topic_id = newdata.topic_id, 
description = newdata.description, 
pic = newdata.pic, 
cha = newdata.cha, 
pica = newdata.pica, 
chb = newdata.chb, 
picb = newdata.picb, 
chc = newdata.chc, 
picc = newdata.picc, 
chd = newdata.chd, 
picd = newdata.picd, 
answer = newdata.answer, 
attempt = newdata.attempt, 
correct = newdata.correct, 
level = newdata.level, 
checked = newdata.checked, 
BookId = newdata.BookId, 
PageNumber = newdata.PageNumber 
FROM 
(SELECT * FROM questions WHERE topic_id = 'newton') newdata 
WHERE 
topic_id = 'lm' 
AND topic_id = newdata.topic_id; 

2>

UPDATE questions 
SET 
id = newdata.id, 
subject_id = newdata.subject_id, 
topic_id = newdata.topic_id, 
description = newdata.description, 
pic = newdata.pic, 
cha = newdata.cha, 
pica = newdata.pica, 
chb = newdata.chb, 
picb = newdata.picb, 
chc = newdata.chc, 
picc = newdata.picc, 
chd = newdata.chd, 
picd = newdata.picd, 
answer = newdata.answer, 
attempt = newdata.attempt, 
correct = newdata.correct, 
level = newdata.level, 
checked = newdata.checked, 
BookId = newdata.BookId, 
PageNumber = newdata.PageNumber 
from questions newdata 
WHERE 
questions.topic_id = 'lm' 
AND newdata.topic_id = 'newton'; 

3> 이들의

UPDATE questions 
SET 
id = (SELECT id FROM questions WHERE topid_id = 'newton'), 
subject_id = (SELECT subject_id FROM questions WHERE topid_id = 'newton'), 
topic_id = (SELECT topic_id FROM questions WHERE topid_id = 'newton'), 
description = (SELECT description FROM questions WHERE topid_id = 'newton'), 
pic = (SELECT pic FROM questions WHERE topid_id = 'newton'), 
cha = (SELECT cha FROM questions WHERE topid_id = 'newton'), 
pica = (SELECT pica FROM questions WHERE topid_id = 'newton'), 
chb = (SELECT chb FROM questions WHERE topid_id = 'newton'), 
picb = (SELECT picb FROM questions WHERE topid_id = 'newton'), 
chc = (SELECT chc FROM questions WHERE topid_id = 'newton'), 
picc = (SELECT picc FROM questions WHERE topid_id = 'newton'), 
chd = (SELECT chd FROM questions WHERE topid_id = 'newton'), 
picd = (SELECT picd FROM questions WHERE topid_id = 'newton'), 
answer = (SELECT answer FROM questions WHERE topid_id = 'newton'), 
attempt = (SELECT attempt FROM questions WHERE topid_id = 'newton'), 
correct = (SELECT correct FROM questions WHERE topid_id = 'newton'), 
level = (SELECT level FROM questions WHERE topid_id = 'newton'), 
checked = (SELECT checked FROM questions WHERE topid_id = 'newton'), 
BookId = (SELECT BookId FROM questions WHERE topid_id = 'newton'), 
PageNumber = (SELECT PageNumber FROM questions WHERE topid_id = 'newton') 
WHERE topic_id = 'lm'; 

없음이 작동하지 않습니다.

도와주세요.

간단한 실수를 한 경우 사과드립니다.

+0

약 JOIN을 참조하십시오. – Strawberry

답변

1

join 또는 지나치게 중첩 된 하위 쿼리를 사용하지 않는 한 MySQL에서는 업데이트에서 동일한 테이블을 참조 할 수 없습니다. MySQL에 대해 적절한 구문을 사용하면 쿼리가 작동 할 수 있습니다. 첫 번째 내용은 다음과 같습니다.

UPDATE questions q JOIN 
     (SELECT * FROM questions WHERE topic_id = 'newton') newdata 
     ON q.topic_id = newdata.topic_id 
    SET q.id = newdata.id, 
     q.subject_id = newdata.subject_id, 
     q.topic_id = newdata.topic_id, 
     q.description = newdata.description, 
     q.pic = newdata.pic, 
     q.cha = newdata.cha, 
     q.pica = newdata.pica, 
     q.chb = newdata.chb, 
     q.picb = newdata.picb, 
     q.chc = newdata.chc, 
     q.picc = newdata.picc, 
     q.chd = newdata.chd, 
     q.picd = newdata.picd, 
     q.answer = newdata.answer, 
     q.attempt = newdata.attempt, 
     q.correct = newdata.correct, 
     q.level = newdata.level, 
     q.checked = newdata.checked, 
     q.BookId = newdata.BookId, 
     q.PageNumber = newdata.PageNumber 
WHERE q.topic_id = 'lm'; 
+0

Gordon Linoff가 작동하지 않습니다. 0 개의 레코드가 영향을받습니다. – Atiq

+0

@Atiq. . . 귀하의 데이터 또는 사용중인 로직을 설명 할 수 없으며 명세서의 구문 만 설명 할 수 있습니다. 분명히 일치하는 것이 없습니다. 조건이 데이터에 맞도록 수정해야합니다. –

관련 문제