1
이것이 가능한지 확실하지 않지만 내가하려는 것은 두 개의 별도 SELECTS
, 하나는 하나의 결과 만 들어야합니다. 두 결과의 결합 참고 : {brackets}의 텍스트는 일반적인 대체 코드 일뿐입니다. 아래는 나에게 CASE
에 구문 오류가 있습니다 : - SET
- 나는 UPDATE
작업이 쿼리 했어업데이트 쿼리에서 SELECT 전에 FROM 뒤에 CASE 문을 사용하는 방법
UPDATE MySchema.MyTable as MyTable
SET {column_names} = {new values}
FROM
CASE
WHEN {case A} THEN
(SELECT {column_names}
FROM MySchema.MyOtherTable
WHERE {conditions}
LIMIT 1)
ELSE
((SELECT {column_names}
FROM MySchema.MyOtherTable
WHERE {conditions}
LIMIT 1)
UNION
(SELECT {column_names}
FROM MySchema.MyOtherTable
WHERE {other_conditions}
LIMIT 1))
END CASE;
AS MyOtherTable
WHERE MyTable.product_id = MyOtherTable.product_id
두 경우 각각의 내부에 중복 FROM
부분을,하지만 난에 중복을 손질하기 위해 노력하고있어 가능한 경우 쿼리. 또한 각각의 케이스 안에 FROM
을 옮겨 보았지만 구문 오류도 발생했습니다.
그래, 내가 생각했던 뭔가를. 이것은 트리거 함수의 내부에 있고, 'A'는 값이 'OLD'에서 NULL이거나 'NEW'와 'OLD'에서 동일합니다. 업데이트가 단일 행 또는 동일한 행과 다른 행을 수정하기 때문입니다. 유니온 된 선택을 단순히 포함하는 것에서 너무 많은 오버 헤드가 생길 까봐 두려웠지만'NOT {case A} '로직을 고려하지 않았습니다. 감사! –