Вставьте проверку запроса, если запись существует. Если нет, добавьте ее

У меня есть таблица mysql ip_list

 +----+---------------+ | id | ip_addr | +----+---------------+ | 1 | 192.168.100.1 | | 2 | 192.168.100.2 | | 3 | 192.168.100.3 | | 4 | 192.168.100.4 | | 5 | 192.168.100.5 | +----+---------------+ 

Я хочу добавить только те записи, которые не находятся в столбце ip_addr . Для

У меня есть следующие записи для добавления в таблицу ip_addr

 192.168.100.6 192.168.100.10 192.168.100.11 192.168.100.1 //already in column 192.168.100.12 

Я не хочу добавлять 192.168.100.1 , потому что он уже находится в столбце.

Итак, возможно ли, что запрос INSERT сначала проверяет записи, а затем вставляет их?

В настоящее время я делаю это с помощью. Сначала я SELECT записи, а затем INSERT их.

но я хочу сделать только один запрос.

Вы можете использовать нижеприведенный запрос. Здесь он будет вставлять ip_address, когда он отсутствует в вашей таблице.

 INSERT INTO ip_list (ip_addr) SELECT * FROM (SELECT '192.168.100.1') AS tmp WHERE NOT EXISTS ( SELECT ip_addr FROM ip_list WHERE ip_addr='192.168.100.1' ); 

Вы должны добавить ключ UNIQUE на ip_addr а затем использовать INSERT IGNORE .

Возможно, это поможет, если вы еще не слышали об UNIQUE : http://www.tutorialspoint.com/sql/sql-unique.htm

если бы я был вами, я применяю UNIQUE ограничение для столбца,

 ALTER TABLE ip_list ADD CONSTRAINT IP_Unique UNIQUE(ip_addr) 

вы можете сделать это с помощью Insert … при повторном обновлении ключа

ИЛИ

в качестве альтернативы вы также можете использовать Replace

Попробуйте инструкцию MySQL INSERT IGNORE .