如果记录存在,则插入查询检查 - 如果不存在,则插入它

2022-08-30 18:18:15

我有一个 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 |
+----+---------------+

我只想添加不在列中的记录。对于 exip_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

目前,我正在这样做。首先,我记录,然后匹配它,然后它。SELECTINSERT

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


答案 1

您可以使用下面的查询。在这里,它将插入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'
);

答案 2

您应该在 上添加一个 UNIQUE 键,然后使用 。ip_addrINSERT IGNORE

如果您还没有听说过,也许这会有所帮助:http://www.tutorialspoint.com/sql/sql-unique.htmUNIQUE


推荐