MySQL WHERE NOT EXISTS 错误

标签 mysql sql

假设我在一个表 users 中有两列 member_idemail。如果使用以下语句找不到类似数据,我将尝试添加新行:

INSERT INTO users(member_id, email) 
VALUES (1,'k@live.com') 
WHERE NOT EXISTS (SELECT * FROM users WHERE member_id=1 AND email='k@live.com');

但是,它不起作用。 #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在“WHERE EXISTS”附近使用的正确语法

请透露一些信息。谢谢。

最佳答案

假设您对 member_idemail 或两者的组合有唯一的限制,我相信 INSERT IGNORE 会为您提供更好的服务。 ,如果该记录不存在,则会插入该记录。

INSERT IGNORE INTO users(member_id, email)
values (1, 'k@live.com');

如果没有唯一约束,就用这个technique here

INSERT INTO users(member_id, email) 
SELECT 1,'k@live.com'
  FROM dual 
  WHERE NOT EXISTS 
    (SELECT * FROM users WHERE member_id=1 AND email='k@live.com');

在虚拟选择中使用Dual而不是users,以将插入的行数限制为1。

关于MySQL WHERE NOT EXISTS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643062/

相关文章:

mySql 一对多关系表结构

PHP MySQL - 查询中的字符串变量不返回结果

php - 我可以根据用户输入更改 mysql 查询,php 吗?

sql - MySQL 子查询返回不正确的结果?

sql - 在 OPENQUERY 语句中使用“use”

MySql 从两个表中选择聚合

mysql - 计算已知深度的层次结构中的值

mysql 使用 signal/resignal 进行错误处理

mysql - 为什么 MySQL CASE 语句返回 NULL 列?

php - 在php中返回sql中的特定行和desc顺序