我正在制作一个博客网站,我需要在将标签插入tblTag之前检查标签是否存在
这就是我正在尝试的:
$var_sqlTagsCheck = "IF (EXISTS(SELECT * FROM tblTag t WHERE t.tagName = '$var_tagCollectInsert'))
BEGIN
INSERT IGNORE INTO tblTag
SET tagName = '$var_tagCollectInsert'
END
ELSE
BEGIN
INSERT INTO tblTag (tagId, tagName) VALUES ('', '$var_tagCollectInsert'))
END
";
但是工作不正常,有人可以借给我一些帮助吗?我哪里出错了,这似乎是相当直接的SQL。
答案 0 :(得分:1)
尝试在 WHERE 子句中使用 EXISTS 谓词:
INSERT INTO tblTag (tagId, tagName)
SELECT '', '$var_tagCollectInsert'
WHERE NOT EXISTS(SELECT * FROM tblTag t
WHERE t.tagName = '$var_tagCollectInsert'));
MySQL的 INSERT INTO 的一般形式是:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
答案 1 :(得分:0)
tagId是主键吗?如果是,您无需插入''或者是一个空值。如果没有尝试将其设置为主键并启用其自动启动,那么您只需要提供tagName我非常确定它确实是直接的。因此,您应该检查所有插入项是否具有值或可用于插入查询。