mysql - WHERE 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_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
                     );

关于mysql - WHERE NOT EXISTS 在尝试根据另一个表的条件独立插入时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51188264/

相关文章:

如果子查询没有结果,MySQL 应该返回行

javascript - Array.push() 如果不存在?

PHP/mySQL - 在插入数据库之前如何安全地编码/解码/转义/任何需要的字符串

mysql - 我如何在 `WHERE` 上使用 `JOIN`?

MySQL一对多选择

mysql - EXCEPT 命令 - 查找预订了所有船只的水手

MySQL 配置。需要很多连接

MYSQL QUERY//COUNT 中的问题

mysql - __* 在Mysql正则表达式中

java - oracle中如何自动调整ID值(主键)?