Mysql IF存在时出错()
错误:如果第1行或其附近出现语法错误:如果不存在,请选择1 从name='Iphone1'A 有人能帮我理解我做错了什么吗?MySQL只支持编程块中的IF语句—存储过程、函数和触发器。因此,你不能用那种方式做你想做的事 相反,您可以只编写一个查询:Mysql IF存在时出错(),mysql,sql,relational-database,Mysql,Sql,Relational Database,错误:如果第1行或其附近出现语法错误:如果不存在,请选择1 从name='Iphone1'A 有人能帮我理解我做错了什么吗?MySQL只支持编程块中的IF语句—存储过程、函数和触发器。因此,你不能用那种方式做你想做的事 相反,您可以只编写一个查询: IF NOT EXISTS (SELECT 1 FROM Products WHERE name='Iphone1' AND manufacturer='appl') THEN INSERT INTO Products(product_i
IF NOT EXISTS (SELECT 1 FROM Products WHERE name='Iphone1' AND manufacturer='appl') THEN
INSERT INTO Products(product_id, name, category, manufacturer)
VALUES (10000, 'IphoneZ', null, 'appl');
但实际上,最好是让数据库直接实施这种唯一性。可以使用唯一的约束/索引执行此操作:
INSERT INTO Products (product_id, name, category, manufacturer)
SELECT product_id, name, category, manufacturer
FROM (SELECT 10000 as product_id, 'IphoneZ' as name, null as category, 'appl' as manufacturer) t
WHERE NOT EXISTS (SELECT 1 FROM Products p WHERE p.name = t.name and p.manufacturer = t.manufacturer);
然后,您可以编写一个查询来忽略错误,方法是:
CREATE UNIQUE INDEX unq_product_manufacturer_name ON product(manufacturer, name);
ON DUPLICATE键没有任何作用-它只是用来避免在插入重复值时返回错误。if语句末尾缺少END if关键字。而且,此SQL语句只能在例程块(如存储过程或存储函数)中使用 您的SQL应该是这样的:
INSERT INTO Products (product_id, name, category, manufacturer)
VALUES (10000, 'IphoneZ', null, 'appl')
ON DUPLICATE KEY UPDATE category = VALUES(category);
是MySQL还是SQL server?
我想你打错了:name='Iphone1'。应该是“IphoneZ”。
有些地方使用单引号,有些地方使用双引号。
如果是mysql,请尝试下面的查询
在产品中插入产品id、名称、类别、制造商
从选择10000、'IphoneZ',null、'appl'中选择*作为tmp_表
如果不存在,请从产品中选择1,其中name='IphoneZ'
和制造商class='appl'限值1
如果是SQL server,请尝试下面的查询
如果不存在,请从产品中选择1,其中name='IphoneZ'和manufacturer='appl'
插入产品id、名称、类别、制造商
值10000,'IphoneZ',null,'appl' 双引号而不是单引号?请阅读使用谷歌搜索标题和“mysql”的手册:。请阅读。
IF NOT EXISTS (SELECT 1 FROM Products WHERE name='Iphone1' AND manufacturer = 'appl') THEN
INSERT INTO Products(product_id, name, category, manufacturer)
VALUES (10000, 'IphoneZ', null, 'appl');
END IF;