mysql
  • if-statement
  • insert
  • exists
  • ignore
  • 2012-04-29 123 views 1 likes 
    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。

    INSERT INTO tblTag (tagId, tagName) 
    SELECT '', '$var_tagCollectInsert' 
    WHERE NOT EXISTS(SELECT * FROM tblTag t 
            WHERE t.tagName = '$var_tagCollectInsert')); 
    

    MySQL的INSERT的一般形式進入是:

    INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] 
        [INTO] tbl_name [(col_name,...)] 
        SELECT ... 
        [ ON DUPLICATE KEY UPDATE 
         col_name=expr 
         [, col_name=expr] ... ] 
    
    +0

    究竟發生了什麼/消息? – Menztrual 2012-04-29 01:49:27

    +2

    定義'工作不正常'。通常,解決方案是使用唯一索引,不管嘗試插入,並捕獲重複鍵錯誤。不要先看,然後做插入。 – EJP 2012-04-29 01:59:55

    +0

    它不檢查標籤是否存在,它不起作用。即我的SQL語句是錯誤的。它給了我一個我已經設置的錯誤消息。 – 2012-04-29 02:15:23

    回答

    3

    試試?如果是的話,你不需要插入''或一個空值。如果不嘗試將其設置爲主鍵並啓用其自動增量功能,那麼您只需提供tagName即可,我非常肯定它確實很簡單。因此,您應該檢查所有插入項目是否具有值或可用於插入查詢。

    +0

    嗯仍然會出現相同的錯誤。我試過你說'code' $ var_sqlTagsCheck =「INSERT INTO tblTag(tagName) SELECT'hey' WHERE NOT EXISTS(SELECT * FROM tblTag WHERE tagName ='hey')」; '代碼' – 2012-04-29 01:57:57

    +1

    性能提示:不要選擇*從TableName inseted的嘗試選擇1從表名 – 2012-07-31 07:23:03

    +0

    在MySQL中不起作用,因爲SELECT需要FROM – 2013-01-30 23:59:40

    0

    是對標籤識別主鍵使用存在WHERE子句中謂語

    +0

    對不起,我發現你的答案令人困惑,我不在這方面有很多經驗。你是說我需要檢查SELECT語句是否返回false或true – 2012-04-29 02:04:38

    +0

    nah。您應該將您的tagId設置爲主鍵。這是主鍵的真正本質嗎?在你提交的代碼中,你試圖向tagId插入一個值,我們不應該這樣做,因爲它應該被設置爲主鍵。然後將其設置爲主鍵。 嘗試changingthis行: INSERT INTO tblTag(標籤識別,標籤名)VALUES( '', '$ var_tagCollectInsert')) 成這樣: INSERT INTO tblTag(標籤名)VALUES( '$ var_tagCollectInsert')) – ljpv14 2012-04-29 03:18:04

    +0

    我的tblTag主鍵是tagId,如果你看看我的代碼,我實際上將tagId的值留空,允許它自動增加。代碼調整不會對我的問題產生任何影響,但感謝您的建議 – 2012-05-01 02:00:56

    相關問題