Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql WHERE NOT EXISTS在尝试根据独立于另一个表的条件插入时不工作_Mysql_Sql_Not Exists - Fatal编程技术网

Mysql WHERE NOT EXISTS在尝试根据独立于另一个表的条件插入时不工作

Mysql WHERE NOT EXISTS在尝试根据独立于另一个表的条件插入时不工作,mysql,sql,not-exists,Mysql,Sql,Not Exists,我试图根据另一个表中的条件将值插入到一个表中。不基于忽略重复值。但我一直在犯语法错误。我不知道怎么继续 我想要实现的是,只有在独立表中的用户未阻止当前用户时,才允许将用户添加到组中: INSERT INTO users_to_groups(user_id, group_id) VALUES (1,'A') WHERE NOT EXISTS (SELECT * FROM users_to_users WHERE user_id_a=2 AND user_id_b=1 AND user_bloc

我试图根据另一个表中的条件将值插入到一个表中。不基于忽略重复值。但我一直在犯语法错误。我不知道怎么继续

我想要实现的是,只有在独立表中的用户未阻止当前用户时,才允许将用户添加到组中:

INSERT INTO users_to_groups(user_id, group_id) 
VALUES (1,'A') 
WHERE NOT EXISTS (SELECT * FROM users_to_users WHERE user_id_a=2 AND user_id_b=1 AND user_blocked=1);
编辑


我试图一次插入多行

您可以执行以下操作:

INSERT INTO users_to_groups(user_id, group_id) 
    SELECT x.user_id, x.group_id
    FROM (SELECT 1 as user_id, 'A' as group_id) x
    WHERE NOT EXISTS (SELECT 1
                      FROM users_to_users utu
                      WHERE utu.user_id_a = 2 AND
                            utu.user_id_b = 1 AND
                            utu.user_blocked = 1
                     );
你可以做:

INSERT INTO users_to_groups(user_id, group_id) 
    SELECT x.user_id, x.group_id
    FROM (SELECT 1 as user_id, 'A' as group_id) x
    WHERE NOT EXISTS (SELECT 1
                      FROM users_to_users utu
                      WHERE utu.user_id_a = 2 AND
                            utu.user_id_b = 1 AND
                            utu.user_blocked = 1
                     );

如果只想插入一行,可以按如下方式尝试:

INSERT INTO users_to_groups(user_id, group_id) 
SELECT 1,'A'
FROM dual
WHERE NOT EXISTS
    (SELECT * FROM users_to_users
     WHERE user_id_a=2 AND user_id_b=1 AND 
     user_blocked=1);

如果要插入真正的查询结果,可以使用逻辑更改
SELECT
语句

例如:

INSERT INTO users_to_groups(user_id, group_id) 
SELECT u.id,'A'
FROM users u
WHERE NOT EXISTS
    (SELECT * FROM users_to_users
     WHERE user_id_a=u.id AND user_id_b=1 AND 
     user_blocked=1);

但是您不能使用
插入到。。。值
具有
其中
条件,因为存在语法错误

如果要
插入
仅一行,则可以按如下方式尝试:

INSERT INTO users_to_groups(user_id, group_id) 
SELECT 1,'A'
FROM dual
WHERE NOT EXISTS
    (SELECT * FROM users_to_users
     WHERE user_id_a=2 AND user_id_b=1 AND 
     user_blocked=1);

如果要插入真正的查询结果,可以使用逻辑更改
SELECT
语句

例如:

INSERT INTO users_to_groups(user_id, group_id) 
SELECT u.id,'A'
FROM users u
WHERE NOT EXISTS
    (SELECT * FROM users_to_users
     WHERE user_id_a=u.id AND user_id_b=1 AND 
     user_blocked=1);

但是您不能使用
插入到。。。值
带有
WHERE
条件,因为您有语法错误

WHERE不存在您可以在插入选择操作中使用插入选择我可以定义要插入的值吗?这些值正在定义中,并且当前不存在于不存在的表中。您可以在插入选择操作中使用插入选择我可以定义要插入的值吗?这些值正在定义中,当前不存在于表中。此语句一次可用于多行的多个值吗?@alionsego。我不确定。这回答了人们提出的问题。如果你还有另一个问题,你可能会考虑用适当的样本数据和期望的结果来询问另一个问题。这个语句将一次使用多个值的多个行吗?我不确定。这回答了人们提出的问题。如果你还有另外一个问题,你可以考虑用适当的样本数据和期望的结果来询问另一个问题。我试图在每次尝试插入多行时插入多行。