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/

相关文章:

php - 运行迁移时的“No such file or directory”或“No such host is known”

sql - 在PostgreSQL中获取2个字符之间的子字符串

sql - Postgres - 如何检查空数组

mysql - 试图在不存在的地方插入数据抛出 : #1242 - Subquery returns more than 1 row

SQL不插入重复项

mysql - 使用大写 ID 从 Rails 应用程序保存 MYSQL 数据库中:Mysql2::Error: Field 'ID' 没有默认值

mysql - 当产品 ID 相同时将数据复制到列

sql-server - 如果记录不存在则插入到表中

php, linux 是否可以防止回显位于 webroot 之外的文件内容?

sql - PostgreSQL:如何在函数中并行运行查询?