【问题标题】:How do I combine two SQL statements into one statement?如何将两条 SQL 语句合并为一条语句?
【发布时间】:2015-01-03 04:29:23
【问题描述】:

我有一个 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])

这可以合并为一个语句吗?

【问题讨论】:

    标签: mysql sql database select insert


    【解决方案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,用not in看到的一个问题是,如果列表中有一个NUll值则返回空结果,所以最好使用不存在
    • 嗯..,我不是OP
    • 抱歉 - 我想睡眠太少了 :)
    【解决方案2】:

    你可以使用 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      相关资源
      最近更新 更多