讓我們假設你有5列的表 - col1,col2,col3,col4,col5。假設你試圖插入的這些列對應的數據在變量中 - $ col1,$ col2,$ col3,$ col4,$ col5(我假設PHP是你的語言,但是請按照你的名字)。
所以你插入可能看起來像:
INSERT INTO `tableA` (`col1`, `col2`, `col3`, `col4`, `col5`)
SELECT $col1, $col2, $col3, $col4, $col5
FROM `tableA`
WHERE NOT EXISTS (SELECT 1
FROM `tableA`
WHERE `col1` = $col1
AND `col2` = $col2
AND `col3` = $col3
AND `col4` = $col4
AND `col5` = $col5);
另一種方法是:
INSERT INTO `tableA` (`col1`, `col2`, `col3`, `col4`, `col5`)
SELECT $col1, $col2, $col3, $col4, $col5
FROM `tableA`
WHERE `col1` = $col1
AND `col2` = $col2
AND `col3` = $col3
AND `col4` = $col4
AND `col5` = $col5
HAVING COUNT(1) = 0;
希望這有助於。
你在桌子上用鑰匙嗎?您可以使用'按重複鍵插入'。 http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html – Tim
@Tim這需要唯一的密鑰,@BjörnMarschollek說他不能添加這樣的密鑰。 –
爲什麼不能改變桌子,這是做這件事的最好方法。任何其他方式都是黑客行爲,如果在鎖定完成後發生查詢運行期間發生不良情況,並且不釋放鎖定,則其他任何方法都無法將其插入。 – mikeq