mysql - 如何将两条 SQL 语句合并为一条语句?

标签 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])

可以将其合并为一个语句吗?

最佳答案

已更新

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

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

关于mysql - 如何将两条 SQL 语句合并为一条语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27751748/

相关文章:

sql - 如何在没有事务的情况下初始化的 SqlCommand/SqlConnection 上设置隔离级别

database - Windows Phone 和 Windows 8 现代应用程序的数据层抽象?

数据库 - 扁平化与规范化

mysql - 如何从 phpMyAdmin 4 中的导出中删除 "CREATE DATABASE IF NOT EXISTS"语句?

MySQL Join 与可选的选择值

mysql - SELECT * 和 SELECT ALL 之间有区别吗?

php - PHP-查询解析错误(MySQLI)

php - Curl post请求不返回数据

php - Laravel 上的 OrderBy 多态一对一关系

sql - 一个命令的交易