我想要做的是检查是否有相同的行,如果没有,则在表中插入新行。
在这种情况下,我如何使用if not exists
?
INSERT INTO `facebook` (`ID`,`fb_id`,`label_id`,`page_ids`,`token`) VALUES (NULL,'". $session['id'] ."','$id','','". $access_token ."')
例如,在该查询中,我想检查是否存在具有相同label_id记录的行,如果没有,则执行该查询。
任何帮助?
感谢
答案 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 ."';