2016-09-08 3 views
0

내가이 쿼리가이없는 경우에도 작업을 가입 않습니다 방법 :이 조건 ... ON e.author_id = u.id 어떤 행과 일치하지 않는 users 테이블도어떤 경기

UPDATE users u 
LEFT JOIN events e ON e.author_id = u.id 
SET u.events = 0, e.seen = 1 
WHERE u.id = ? 

내 쿼리 업데이트를. users 테이블에 일치하는 행이없는 경우 이제 events을 업데이트해야합니다. 나는 RIGHT JOIN에 의해 그것을 할 수있다. 하지만 RIGHT JOINLEFT JOIN을 함께 사용할 수 있는지 알고 싶습니다.

+0

MYSQL에 대해서는 잘 모르지만 전체 외부 조인은 – Paparazzi

+0

업데이트와 함께 * LEFT * 조인을 생각한 적이 없었습니다. 그것은 위험한 것처럼 보일 것입니다. 왜 그런지 알게 된 것 같습니다. – Drew

+0

나는 당신의 질문을 사랑한다. 지난 2 ~ 3 개월 동안 그들은 내 마음 속으로 거의 유명해졌습니다 : – Drew

답변

3

MySQL은 FULL OUTER JOIN을 지원하지 않으므로 MySQL에서는이를 수행 할 수 없습니다.

그런데 왜 그냥 실행되지이 업데이트 문 : 당신은 트랜잭션 의미가 중요하며 스토리지 엔진은 트랜잭션을 지원 생각하는 경우

UPDATE users u 
    SET u.events = 0 
    WHERE u.id = ?; 

UPDATE events e 
    e.seen = 1 
    WHERE e.author_id = ?; 

당신은, 트랜잭션에 이러한 포장 할 수 있습니다.

+0

고맙습니다 .. upvote ..'CROSS JOIN'은 어떻습니까? – stack

+0

@stack. . . id가 두 테이블에 없다면 'CROSS JOIN'은 실패합니다. –