我有两个表:标签和链接表photos_tags。我想添加一个新标签,所以我检查标签是否已经在标签表中,如果没有,我会插入一个标签。我的表看起来像这样:tags(id,name),photos_tags(photos_id,tags_id)。现在我试着这样做:
IF NOT EXISTS (SELECT * FROM tags WHERE name=*tagsName*)
INSERT INTO tags VALUES (NULL, *tagsName*); --NULL used for autonumbering
我也试过了:
INSERT INTO tags (
SELECT NULL, *tagsName*
WHERE NOT EXISTS (
SELECT * FROM tags
WHERE name=*tagsName*
)
);
两个语句都会导致语法错误:
if
select
我的查询应该是什么样的?
答案 0 :(得分:9)
在UNIQUE
上创建tags.name
约束并使用此项:
INSERT OR IGNORE
INTO tags (id, name)
VALUES (NULL, 'tagsName')
如果由于某种原因你不能或不想这样做,请使用:
INSERT
INTO tags (id, name)
SELECT NULL, 'tagsName'
WHERE NOT EXISTS
(
SELECT NULL
FROM tags
WHERE name = 'tagsName'
)
答案 1 :(得分:3)
INSERT INTO tags (name)
SELECT 'tagsName'
WHERE NOT EXISTS (SELECT 1 FROM tags WHERE name = 'tagsName');
OR
INSERT OR IGNORE
INTO tags (id, name)
VALUES (NULL, 'tagsName')
如果您有唯一约束