Mysql - 从表 2 上的 SELECT 中插入表 1,表 1 上的 WHERE NOT EXIST

标签 mysql insert where-clause

表1具有unique_id、ID_actor、ID_media、ID_program。

每个媒体可以包含 1 个或多个节目,每个节目可以包含 1 个或多个 Actor ,并且不能重复。

在另一个表(表2)中,它有更多信息,有时在标题中人们会记录 Actor 的名字..所以我发现这个查询可以对媒体进行正确的引用

INSERT INTO Table1 (ID_Actor,ID_Media,ID_Program) 
    (SELECT 123, ID_Media, ID_Program FROM TABLE2 WHERE Title LIKE '%ActorsName%')

这段代码运行良好,但如果 Actor 已经引用到媒体上的程序,它将被复制..所以,因为插入似乎不支持 WHERE 不知道如何首先检查 Actor 是否已经在 table1 上、在该媒体上以及在来自 SELECT 查询的该程序上。

如果不存在则插入

    (SELECT ID_Actor,ID_Media,ID_Program from Table1 
WHERE ID_Actor = 123 
    AND ID_Media = (ID_media from SELECT QUERY) 
AND  ID_Program = (ID_Program From Select Query))

最佳答案

奇怪的是,您错过了该功能,因为您的问题标题几乎具有您需要的语法。

INSERT INTO Table1 (ID_Actor,ID_Media,ID_Program) 
SELECT DISTINCT 123, t2.ID_Media, t2.ID_Program 
FROM TABLE2 AS t2
WHERE t2.Title LIKE '%ActorsName%'
   AND NOT EXISTS (
      SELECT 1 
      FROM Table1 AS t1
      WHERE t1.ID_Actor = 123
         AND t1.ID_Media = t2.ID_Media
         AND t1.ID_Program = t2.ID_Program
);

关于Mysql - 从表 2 上的 SELECT 中插入表 1,表 1 上的 WHERE NOT EXIST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43727427/

相关文章:

在没有明显错误的情况下,用户创建期间的 MySql 语法错误

javascript - 将本地存储值插入数据库

来自不同来源的 Oracle 过程插入

mysql - SQL触发器,插入语句

mysql - 将 SQL MAX 限制为匹配 WHERE 子句的行

来自带有 IN 子句的两个表的 mysql 查询请求

php - 花时间优化 sql 查询 VS 从数据库中推送不必要的数据

MySQL > SSMS 2012 链接服务器 "Requested conversion is not supported."

mysql - MYSQL 中的批量插入

php - 为什么我要使用 PHP 将 NULL 值插入到 MySQL 表中?