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/