我正在尝试插入一个基于选择搜索结果的新行。 下面是当前的查询。
DECLARE @count INT;
SET @count = ( SELECT COUNT(*) FROM tagged_products
WHERE
company_id = 1 AND
product_id = 141 AND
category_id = 3)
IF @count <= 0
THEN
INSERT INTO tagged_products (company_id, product_id, category_id)
VALUES (1, 141, 3)
END IF
我得到的当前错误是:您的SQL语法中有一个错误; 检查与您的MySQL server版本相对应的手册,以确定在“if@count<=0 THEN INSERT INTO tagged_products(company_'at line 6
”附近使用的正确语法
如果没有匹配的select查询,查询如何插入行,否则它应该忽略它?
谢谢:)
如果行还不存在,则要插入行。 最简单的方法是在3个表列上有一个unique
约束(或索引),然后使用insert.。。on duplicate key
:
INSERT INTO tagged_products (company_id, product_id, category_id)
VALUES (1, 141, 3)
ON DUPLICATE KEY UPDATE company_id = VALUES(company_id) -- no-op
如果无法创建唯一键,则可以使用insert.。。select.。。where not exists.。。
:
INSERT INTO tagged_products (company_id, product_id, category_id)
SELECT 1, 141, 3
WHERE NOT EXISTS (SELECT 1 FROM tagged_products WHERE company_id = 1 AND product_id = 141 AND category_id = 3)