2011-10-28 112 views
1

我想要做的事情是檢查是否有相同的行,如果不是插入新行到表。如何在插入行時不存在如果不存在mysql

在這種情況下,我該如何使用if not exists

INSERT INTO `facebook` (`ID`,`fb_id`,`label_id`,`page_ids`,`token`) VALUES (NULL,'". $session['id'] ."','$id','','". $access_token ."') 

例如,在該查詢中,我想檢查是否存在具有相同label_id記錄的行,如果沒有,執行該查詢。

有幫助嗎?

感謝

回答

2

您可以使用INSERT IGNORE INTO ...語法。當使用這種方式時,重複的鍵錯誤將被視爲警告,並且語句將返回而不插入受影響的行。

+1

確保你有一個唯一索引,或'label_id'主鍵 – Mikhail

0
INSERT INTO `facebook` (`ID`,`fb_id`,`label_id`,`page_ids`,`token`) 
SELECT NULL, '". $session['id'] ."', '$id', '', '". $access_token ."' 
FROM DUAL 
WHERE NOT EXISTS (SELECT 'x' FROM facebook WHERE label_id = '$id') 

我覺得FROM DUAL是可選的,但我是一個Oracle的傢伙。 :)

+0

這是一個正確的方向;-) – Devart

0

您應該在label_id字段上設置UNIQUE約束,然後按照說明here

0

用戶插入進忽略重複:

INSERT IGNORE INTO `facebook` 
SET `ID` = null, 
`fb_id` = '". $session['id'] ."', 
`label_id` = '$id', 
`page_ids`='', 
`token`='". $access_token ."'; 
相關問題