반응형
MySQL 유니언이 insert and select 문에서 작동하지 않습니다.
여러 테이블에서 데이터를 가져와 하나의 테이블에 삽입하는 SQL 스크립트를 만들고 싶습니다.
아래 하위 쿼리는 정상적으로 작동합니다.
- INSERT 문에서 하나씩 실행할 때
- 삽입 쿼리에서 사용하지 않을 때 두 선택 쿼리 모두 유니언과 함께 정상적으로 작동합니다.
하지만 유니온을 사용하여 단일 스크립트를 만들면 제공됩니다.syntax error
.
INSERT INTO cfx_subscriptions ( cfx_account_id, isv_company_id, license_qty, `status`, created_on,
subscription_start_date, subscription_end_date, subscription_id, modified_on, product_id)
(
SELECT s.idp_account_id, '', 1 AS quantity,
(CASE
WHEN s.activation_status = 1 THEN 'active'
WHEN s.activation_status = 2 THEN 'suspended'
WHEN s.activation_status = 3 THEN 'deleted'
ELSE ''
END) AS 'status', CAST(FROM_UNIXTIME( s.creation_date / 1000) AS DATETIME ) AS created_on,
CAST(FROM_UNIXTIME( s.creation_date / 1000) AS DATETIME ) AS subscription_start_date,
s.expiry_date, s.sage_company_id, s.updated_date, s.portal_product_id FROM cfx_sage_subscriptions s
UNION
SELECT os.idp_account_id, c.id, os.quantity, os.`status`, cast(os.creationDate as DATETIME) AS created_on,
cast(os.effectiveStartDate as DATETIME) AS subscription_start_date, cast(os.commitmentEndDate as DATETIME) AS commitmentEndDate,
os.subscriptionId, cast(os.creationDate as DATETIME) AS modified_on, TRIM(LEADING '0' FROM SUBSTR(os.cloudselect_product_id,4))
FROM cfx_office365_customer_order_subscriptions os
JOIN cfx_office365_customer c ON os.tenantId=c.companyProfile_tenantId
)
다음은 위의 첫 번째 스크립트에서 발생한 오류입니다.
SQL 오류(1064):SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 'UNION' 근처에서 사용할 올바른 구문을 확인하십시오.
선택한 결과에서 별칭을 피하려고 합니다.
INSERT INTO cfx_subscriptions ( cfx_account_id, isv_company_id, license_qty, `status`, created_on,
subscription_start_date, subscription_end_date, subscription_id, modified_on, product_id)
SELECT s.idp_account_id, '', 1 ,
(CASE
WHEN s.activation_status = 1 THEN 'active'
WHEN s.activation_status = 2 THEN 'suspended'
WHEN s.activation_status = 3 THEN 'deleted'
ELSE ''
END) , CAST(FROM_UNIXTIME( s.creation_date / 1000) AS DATETIME ) ,
CAST(FROM_UNIXTIME( s.creation_date / 1000) AS DATETIME ) ,
s.expiry_date, s.sage_company_id, s.updated_date, s.portal_product_id
FROM cfx_sage_subscriptions s
UNION
SELECT os.idp_account_id, c.id, os.quantity, os.`status`, cast(os.creationDate as DATETIME) ,
cast(os.effectiveStartDate as DATETIME) , cast(os.commitmentEndDate as DATETIME) ,
os.subscriptionId, cast(os.creationDate as DATETIME) , TRIM(LEADING '0' FROM SUBSTR(os.cloudselect_product_id,4))
FROM cfx_office365_customer_order_subscriptions os
JOIN cfx_office365_customer c ON os.tenantId=c.companyProfile_tenantId
언급URL : https://stackoverflow.com/questions/54944516/mysql-union-is-not-working-with-insert-and-select-statement
반응형
'IT' 카테고리의 다른 글
Spring Boot에서는 머리가 없지만 Spring이나 플레인 자바에서는 머리가 없다고 Swing은 생각하는 이유는 무엇입니까? (0) | 2023.07.22 |
---|---|
임시 테이블 생성으로 인해 2개 스크립트 대기 중입니다. (0) | 2023.07.22 |
__dict__ 속성 설명 (0) | 2023.07.22 |
plsql 루프 내에서 Oracle에 문자열 추가 (0) | 2023.07.22 |
MariaDB(UPPER_SNAKE_CASE)의 최대 절전 모드 명명 전략 (0) | 2023.07.22 |