如何将两个SQL语句组合成一个语句?

时间:2015-01-03 04:29:24

标签: mysql sql database select insert

我有一个INSERT SQL语句,其中我插入表中的行的一个值是另一个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])

这可以合并成一个陈述吗?

2 个答案:

答案 0 :(得分:1)

<强>已更新

我已根据建议更新了查询 - 希望它符合您的情况:

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);

答案 1 :(得分:0)

您可以使用insert into select syntax

不存在将是相关子查询

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)