nme*_*nme 2 sql sqlite insert exists
我有两个表:标签和链接表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*  
  )  
);
这两个语句都会导致语法错误:
ifselect我的查询应该是什么样的?
创建一个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'
        )
| 归档时间: | 
 | 
| 查看次数: | 8788 次 | 
| 最近记录: |