본문 바로가기
MySql

MySQL-SELECT 쿼리를 기반으로하는 UPDATE 쿼리

by 베이스 공부 2021. 1. 26.
반응형

날짜-시간을 기준으로 두 이벤트간에 연관성이 있는지 확인해야합니다 (동일한 테이블에서).

한 데이터 세트에는 특정 이벤트의 종료 날짜-시간이 포함되고 다른 데이터 세트에는 다른 이벤트의 시작 날짜-시간이 포함됩니다.

첫 번째 이벤트가 두 번째 이벤트 전에 완료되면 연결하고 싶습니다.

내가 지금까지 가지고있는 것은 :

SELECT name as name_A, date-time as end_DTS, id as id_A 
FROM tableA WHERE criteria = 1


SELECT name as name_B, date-time as start_DTS, id as id_B 
FROM tableA WHERE criteria = 2

그런 다음 그들과 합류합니다.

SELECT name_A, name_B, id_A, id_B, 
if(start_DTS > end_DTS,'VALID','') as validation_check
FROM tableA
LEFT JOIN tableB ON name_A = name_B

그런 다음 validation_check 필드를 기반으로 SELECT가 중첩 된 UPDATE 쿼리를 실행할 수 있습니까?

 

해결 방법

 

실제로 다음 두 가지 방법 중 하나를 수행 할 수 있습니다.

MySQL 업데이트 조인 구문 :

UPDATE tableA a
INNER JOIN tableB b ON a.name_a = b.name_b
SET validation_check = if(start_dts > end_dts, 'VALID', '')
-- where clause can go here

ANSI SQL 구문 :

UPDATE tableA SET validation_check = 
    (SELECT if(start_DTS > end_DTS, 'VALID', '') AS validation_check
        FROM tableA
        INNER JOIN tableB ON name_A = name_B
        WHERE id_A = tableA.id_A)

가장 자연스러운 것을 선택하십시오.

 

참조 페이지 https://stackoverflow.com/questions/1262786

 

 

반응형

댓글