#mysql
#mysql
Вопрос:
То, что я хочу сделать, это проверить, есть ли такая же строка, и если нет, вставить новую строку в таблицу.
В таком случае, как я могу использовать if not exists
?
INSERT INTO `facebook` (`ID`,`fb_id`,`label_id`,`page_ids`,`token`) VALUES (NULL,'". $session['id'] ."','$id','','". $access_token ."')
Например, в этом запросе я хочу проверить, есть ли строка с той же записью label_id, и если нет, выполните этот запрос.
любая помощь?
Спасибо
Ответ №1:
Вы можете использовать INSERT IGNORE INTO ...
синтаксис. При использовании этого повторяющиеся ключевые ошибки рассматриваются как предупреждения, и оператор вернется без вставки затронутой строки.
Комментарии:
1. Убедитесь, что у вас есть уникальный индекс или первичный ключ на
label_id
Ответ №2:
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. 🙂
Ответ №3:
Пользователь вставляет в, чтобы игнорировать дубликаты:
INSERT IGNORE INTO `facebook`
SET `ID` = null,
`fb_id` = '". $session['id'] ."',
`label_id` = '$id',
`page_ids`='',
`token`='". $access_token ."';