如果不存在,我正在尝试将成分插入成分表中。 我使用以下语法:
INSERT INTO ingredient(Name)
(
SELECT 'ingName' FROM dummytable WHERE
(SELECT count(*) FROM ingredient WHERE Name = 'ingName')=0)
这似乎不起作用(0行受影响),即使SELECT查询似乎返回了所需的结果(包含“ingName”的条目)。
“ingredient”表有2列:Name,id(id是自动递增的)
谢谢, 李
答案 0 :(得分:7)
最好在name
列添加唯一索引:
ALTER TABLE `ingredient` ADD UNIQUE(`Name`)
完成后,您可以使用INSERT IGNORE
:
INSERT IGNORE INTO `ingredient` ... /* anything */
答案 1 :(得分:3)
这是因为您的内部查询SELECT count(*) FROM ingredient WHERE Name = 'ingName'
正在返回值> 0因此上部查询SELECT 'ingName' FROM dummytable WHERE
没有选择任何行,因此没有发生插入。
我尝试使用具有2列name|value
的测试表并且它确实工作正常
INSERT INTO test1(name) (
SELECT 'name' FROM test2 WHERE
(
SELECT count(*) FROM test2 WHERE name = 'bilboa'
)
=0
)
插入值为name
的2行会导致我在select查询和我的测试表中选择2行。