插入行mysql时如何使用如果不存在

时间:2011-10-28 14:30:55

标签: mysql

我想要做的是检查是否有相同的行,如果没有,则在表中插入新行。

在这种情况下,我如何使用if not exists

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

例如,在该查询中,我想检查是否存在具有相同label_id记录的行,如果没有,则执行该查询。

任何帮助?

感谢

4 个答案:

答案 0 :(得分:2)

您可以使用INSERT IGNORE INTO ...语法。使用此时,重复的键错误将被视为警告,并且语句将返回而不插入受影响的行。

答案 1 :(得分: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是可选的,但我是甲骨文家伙。 :)

答案 2 :(得分:0)

您应该在label_id字段上添加UNIQUE约束,然后按照here的说明进行操作。

答案 3 :(得分:0)

用户插入以忽略重复项:

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