Я хочу создать SQL-скрипт для извлечения данных из нескольких таблиц и вставки в одну таблицу.
Под подзапросами работает нормально
- При запуске их один за другим в INSERT оператор
- Оба запроса на выборку работают нормально с union, когда я не использую их в запросе вставки.
, но когда я использую UNION чтобы сделать его одним скриптом, он дает мне 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