如何将两个 SQL 语句合并为一个语句?
How do I combine two SQL statements into one statement?
我有一个 INSERT SQL 语句,其中我插入 table 的行的值之一是另一个 SELECT SQL 查询的结果。我想知道如何适当地将这两个语句合二为一。谢谢。
SELECT语句:
SELECT mpca.creative_attribute_id
FROM media_property_creative_attribute as mpca
WHERE mpca.media_property_id=54
and mpca.media_property_creative_attribute_external_id=101;
此查询的结果将是单个值,我将在下一个 INSERT 语句中将其表示为 [creative_attribute_id]。
INSERT 语句:
INSERT INTO ad_creative_attribute_list (ad_id, creative_attribute_id)
VALUES (12, [creative_attribute_id])
WHERE NOT EXISTS (
SELECT *
FROM ad_creative_attribute_list as acal
WHERE acal.ad_id=12
AND acal.creative_attribute_id=[creative_attribute_id])
这可以合并成一个声明吗?
已更新
我已经根据建议更新了查询 - 希望它适合您的情况:
INSERT INTO
ad_creative_attribute_list (ad_id, creative_attribute_id)
SELECT
12, mpca.creative_attribute_id
FROM
media_property_creative_attribute as mpca
WHERE
mpca.media_property_id = 54
and mpca.media_property_creative_attribute_external_id = 101
AND NOT EXISTS (SELECT acal.creative_attribute_id
FROM ad_creative_attribute_list as acal
WHERE acal.ad_id = 12
AND mpca.creative_attribute_id = acal.creative_attribute_id);
您可以使用 insert into select 语法
不存在会关联子查询
INSERT INTO ad_creative_attribute_list (ad_id, creative_attribute_id)
SELECT 12, mpca.creative_attribute_id
FROM media_property_creative_attribute as mpca
WHERE mpca.media_property_id=54
and mpca.media_property_creative_attribute_external_id=101
And NOT EXISTS (
SELECT 1
FROM ad_creative_attribute_list as acal
WHERE acal.ad_id=12
AND acal.creative_attribute_id= mpca.creative_attribute_id)
我有一个 INSERT SQL 语句,其中我插入 table 的行的值之一是另一个 SELECT SQL 查询的结果。我想知道如何适当地将这两个语句合二为一。谢谢。
SELECT语句:
SELECT mpca.creative_attribute_id
FROM media_property_creative_attribute as mpca
WHERE mpca.media_property_id=54
and mpca.media_property_creative_attribute_external_id=101;
此查询的结果将是单个值,我将在下一个 INSERT 语句中将其表示为 [creative_attribute_id]。
INSERT 语句:
INSERT INTO ad_creative_attribute_list (ad_id, creative_attribute_id)
VALUES (12, [creative_attribute_id])
WHERE NOT EXISTS (
SELECT *
FROM ad_creative_attribute_list as acal
WHERE acal.ad_id=12
AND acal.creative_attribute_id=[creative_attribute_id])
这可以合并成一个声明吗?
已更新
我已经根据建议更新了查询 - 希望它适合您的情况:
INSERT INTO
ad_creative_attribute_list (ad_id, creative_attribute_id)
SELECT
12, mpca.creative_attribute_id
FROM
media_property_creative_attribute as mpca
WHERE
mpca.media_property_id = 54
and mpca.media_property_creative_attribute_external_id = 101
AND NOT EXISTS (SELECT acal.creative_attribute_id
FROM ad_creative_attribute_list as acal
WHERE acal.ad_id = 12
AND mpca.creative_attribute_id = acal.creative_attribute_id);
您可以使用 insert into select 语法
不存在会关联子查询
INSERT INTO ad_creative_attribute_list (ad_id, creative_attribute_id)
SELECT 12, mpca.creative_attribute_id
FROM media_property_creative_attribute as mpca
WHERE mpca.media_property_id=54
and mpca.media_property_creative_attribute_external_id=101
And NOT EXISTS (
SELECT 1
FROM ad_creative_attribute_list as acal
WHERE acal.ad_id=12
AND acal.creative_attribute_id= mpca.creative_attribute_id)