mysql - 如果缓冲区不存在,请将名称+代码添加到缓冲区中?

标签 mysql

CREATE TABLE item(
code TINYINT UNSIGNED NOT NULL,
name CHAR(20) NOT NULL,
UNIQUE KEY(name, code)) ENGINE = INNODB

CREATE TABLE buffer(
code TINYINT UNSIGNED NOT NULL,
name CHAR(20) NOT NULL,
PRIMARY KEY(name, code)) ENGINE = INNODB

如何仅使用一条语句执行以下操作:如果任何表中都不存在名称+代码,则将它们添加到缓冲区中。

最佳答案

使用EXISTS语句作为子查询,如下所示:

INSERT INTO buffer (code, name)
SELECT 1,'myname' FROM dual
WHERE NOT EXISTS (
  SELECT * FROM item WHERE code=1 and name='myname'
  UNION
  SELECT * FROM buffer WHERE code=1 and name='myname'
)

工作 fiddle :http://sqlfiddle.com/#!2/4ecc66/1

关于mysql - 如果缓冲区不存在,请将名称+代码添加到缓冲区中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22260445/

相关文章:

php - mysql sum 与命名列

mysql - 在重复键上插入自动增量值?

php - 多语言站点 URL 和语言路径

mysql - 如何使用选择查询从表中获取数据

mysql - 获取最后的余额符号变化(Mysql

mysql - 在数据库中查找重复的字符串

mysql - 进行 mySQL 查询来获取尚未售出的产品?

mysql - 如何发现 RDBMS 中的关系?

MySQL:如何列出所有无权访问现有数据库的用户

mysql - 在mysql的子查询中使用相同的字段