1

ブログ サイトを作成しています。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のようです。

4

2 に答える 2

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] ... ]
于 2012-04-29T01:50:42.637 に答える
0

tagId は主キーですか? はいの場合、'' または null 値を挿入する必要はありません。それを主キーとして設定して自動増分を有効にしない場合は、tagName を指定するだけでよいので、本当に簡単だと確信しています。したがって、すべての挿入項目に値があるか、挿入クエリで使用できるかどうかを確認する必要があります。

于 2012-04-29T01:50:45.303 に答える