2 개의 테이블이 있습니다.왼쪽 조인을 사용하는 SQL 요청
표 A : (ID, 타입, ...)
여기서 ID는 기본 키
표 B이다 (ID, 타임 스탬프, OLD_TYPE,하는 new_type, ...)
여기에 ID가 기본 키가 아니다.
B.type에 의한 마지막 (타임 스탬프에 의한) A.nype과 같지 않은 ID를 반환하는 sql 요청을 만들고 싶다.
2 개의 테이블이 있습니다.왼쪽 조인을 사용하는 SQL 요청
표 A : (ID, 타입, ...)
여기서 ID는 기본 키
표 B이다 (ID, 타임 스탬프, OLD_TYPE,하는 new_type, ...)
여기에 ID가 기본 키가 아니다.
B.type에 의한 마지막 (타임 스탬프에 의한) A.nype과 같지 않은 ID를 반환하는 sql 요청을 만들고 싶다.
니키타에게 도움이 될까요?
select a.* from A a where a.type!= (
select b.new_type from B b order by `timestamp` desc limit 1
)
시도 :
select a.id, a.type
from A a
join (select id, max(`timestamp`) max_timestamp from B group by id) mb
on a.id = mb.id
join B b on mb.id = b.id and mb.max_timestamp = b.`timestamp`
where a.type <> b.new_type
를 사용하여 트리거 이벤트를 기록하려면,이 (테스트되지 않은 코드)와 같은 어떤 것을 :
CREATE TRIGGER logger BEFORE UPDATE ON A
FOR EACH ROW
BEGIN
IF NEW.Type <> OLD.Type THEN
INSER INTO B(id, timestamp, old_type, new_type, ...)
VALUES (id, CURRENT_TIMESTAMP, OLD.Type, NEW.Type, ...)
END IF;
END;
더 읽기에 대한
documentation를 살펴 보자.
질문에 대한 약간의 배경을 알려주는 데 도움이됩니다. 'A'와'B'라고 부르는 것은 우리가 당신의 문제를 이해하는 것을 어렵게 만듭니다. –
샘플 데이터 및 출력물을 보여주십시오. 그렇지 않으면 sql fiddle – DevelopmentIsMyPassion
을 만들면 질문에 대한 정보가 부족합니다. 어떻게 테이블 B를 그룹화할까요? –