[SQL] PostgreSQL의 IF 문
SQLPostgreSQL의 IF 문
어떻게 포스트 그레스에서 같은 쿼리를 할 수 있습니까?
IF (select count(*) from orders) > 0
THEN
DELETE from orders
ELSE
INSERT INTO orders values (1,2,3);
해결법
-
==============================
1.시험:
시험:
DO $do$ BEGIN IF EXISTS (SELECT FROM orders) THEN DELETE FROM orders; ELSE INSERT INTO orders VALUES (1,2,3); END IF; END $do$
당신은 실제로 모두 여기에 추가로 SELECT가 필요하지 않습니다. 이것은 조금 더 빨리, 같은 않습니다 :
DO $do$ BEGIN DELETE FROM orders; IF NOT FOUND THEN INSERT INTO orders VALUES (1,2,3); END IF; END $do$
가능성이 있지만, 같은 테이블에 대한 동시 트랜잭션을 시도 쓰기 방해 할 수 있습니다. 시연으로 진행하기 전에 동일한 트랜잭션에서 테이블을 쓰기 - 잠금, 절대적으로해야합니다.
-
==============================
2.그냥 도움말을 사람이 나 같은이 질문에 우연히 발견하는 경우, 당신이 사용하려는 경우 PostgreSQL을에, 당신은 "CASE"를 사용
그냥 도움말을 사람이 나 같은이 질문에 우연히 발견하는 경우, 당신이 사용하려는 경우 PostgreSQL을에, 당신은 "CASE"를 사용
select case when stage = 1 then 'running' when stage = 2 then 'done' when stage = 3 then 'stopped' else 'not running' end as run_status from processes
-
==============================
3.워드 프로세서
워드 프로세서
IF boolean-expression THEN statements ELSE statements END IF;
다음과 같이 그래서 위의 예에서 코드가 보일 것입니다 :
IF select count(*) from orders > 0 THEN DELETE from orders ELSE INSERT INTO orders values (1,2,3); END IF;
당신은 실종되었다 : END IF를;
-
==============================
4.또한 익명 코드 블록 절차 블록과 PL / pgSQL의 경우에 대한 기본 구조를 사용할 수 있습니다 :
또한 익명 코드 블록 절차 블록과 PL / pgSQL의 경우에 대한 기본 구조를 사용할 수 있습니다 :
DO $$ BEGIN CASE WHEN boolean-expression THEN statements; WHEN boolean-expression THEN statements; ... ELSE statements; END CASE; END $$;
참고 :
from https://stackoverflow.com/questions/11299037/postgresql-if-statement by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 서버에서 가장 가까운 날짜 찾기 (0) | 2020.04.19 |
---|---|
[SQL] SQL - COALESCE와 ISNULL의 차이? [복제] (0) | 2020.04.19 |
[SQL] MySQL은 각 카테고리의 상위 5 반환 (0) | 2020.04.19 |
[SQL] 병합 중복 날짜 간격 (0) | 2020.04.19 |
[SQL] SQL은 다 대다 같은 유형의 관계 테이블로 만들려면 (0) | 2020.04.19 |