插入查询检查是否存在记录 - 如果不存在,请插入它

Sum*_*ani 19 php mysql sql sql-insert

我有一个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 |
+----+---------------+
Run Code Online (Sandbox Code Playgroud)

我想只添加不在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
Run Code Online (Sandbox Code Playgroud)

我不想添加192.168.100.1,因为它已经在列中.

那么,INSERT查询是否有可能首先检查记录然后插入它?

目前,我正在这样做..首先我SELECT记录然后匹配它然后INSERT它.

但是,我只想做一个查询.

Yog*_*har 20

您可以使用以下查询.这里它会在你的表中没有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'
);
Run Code Online (Sandbox Code Playgroud)

  • @YogeshSuthar再次感谢:) (2认同)

mrk*_*rks 8

您应该添加一个UNIQUE键ip_addr然后使用INSERT IGNORE.

如果您还没有听说过,这可能会有所帮助UNIQUE:http://www.tutorialspoint.com/sql/sql-unique.htm


Pet*_*iss 5

尝试 MySQL INSERT IGNORE语句。