mysql中先判断数据是否存在,如存在则增加数量,不存在则增加一条记录

mysql中先判断数据是否存在,如存在则增加数量,不存在则增加一条记录,第1张

比如想往表中插入一条数据如果表中没有该条数据才插入,如果已经存在该条数据就不插入。

首先,在创建表时,将不需要重复的字段设置为unique,然后在插入时,使用insert ignore语句。

例如:(数据库用的是mysql5)

创建一张表用来存储用户:

create table user_info

(

   uid mediumint(10) unsigned NOT NULL auto_increment primary key,

   last_name char(20) not null,

   first_name char(20) not null,

   unique ( last_name, first_name)

)

alter table anser add UNIQUE (last_name,first_name)

插入数据:

insert ignore into user_info (last_name,first_name) values ('x','y')

这样一来,如果表中已经存在last_name='x'且first_name='y'的数据,就不会插入,如果没有就会插入一条新数据。

——————注意,以上是我直接复制粘贴的信息,以下为原创

然后捕捉查询结果,如果确实已经执行了插入 *** 作,那么就结束sql

否则,就执行一次update *** 作

这样的话,我觉得程序运行性能是较好的

如果是要完成     存在则 更新,   不存在 则插入的 *** 作.

直接使用   replace into   语句就可以了

下面是例子代码

-- 源表

CREATE TABLE test_from (id INT  primary key, val VARCHAR(20))

-- 目标

CREATE TABLE test_to (id INT  primary key, val VARCHAR(20))

 

-- 插入源表

INSERT INTO test_from VALUES (1, 'A')

INSERT INTO test_from VALUES (2, 'B')

  

-- 合并 源表到目标表

 replace into  test_to (id, val) 

 select id, val from test_from

-- 第一次检查 目标表数据.

mysql> SELECT * FROM test_to

+------+------+

| id   | val  |

+------+------+

|    1 | A    |

|    2 | B    |

+------+------+

2 rows in set (0.00 sec)

  

-- 更新源表

UPDATE test_from SET val = 'A2' WHERE id = 1

-- 删除源表

DELETE FROM test_from WHERE id = 2

-- 插入源表

INSERT INTO test_from VALUES (3, 'C')

-- 合并 源表到目标表

 replace into   test_to (id, val) 

 select id, val from test_from

-- 再次检查 目标表数据.

mysql> SELECT * FROM test_to

+----+------+

| id | val  |

+----+------+

|  1 | A2   |

|  2 | B    |

|  3 | C    |

+----+------+

3 rows in set (0.00 sec)

注意:

表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7464276.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存