如何使用一条mysql语句实现如果查询到的数据不存在就创建

有这样一个表log,字段有id(主键)、date、ip,现在我要插入一条记录,前提是数据库上是没有者条记录的,但有一个特别的地方,就是比如我现在的表中有记录:(我这个表主... 有这样一个表log,字段有id(主键)、date、ip,现在我要插入一条记录,前提是数据库上是没有者条记录的,但有一个特别的地方,就是比如我现在的表中有记录:(我这个表主要统计每天有多个ip)
id date ip
1 2014-01-01 192.168.1.1
2 2014-01-02 192.168.1.2
如果我插入的是2014-01-03 192.168.1.2这条记录,因为这条在数据库上没有,就可以写入数据库。
如果我插入的是 2014-01-02 192.168.1.2这条记录,因为这条在数据库上有,就不可以写入数据库。
我就想要一条语句,实现以上功能
展开
 我来答
talorkitty
2014-01-19 · TA获得超过771个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:436万
展开全部

你把这张表的 date和ip字段联合设置为唯一索引。

ALTER TABLE `log` ADD UNIQUE `date_ip` (`date`, `ip`);

然后你就大胆的insert数据吧。有重复的就报错插入失败。然后接着插入下一条就OK。

掌瞬爱A
推荐于2017-11-26 · TA获得超过1309个赞
知道小有建树答主
回答量:1137
采纳率:87%
帮助的人:376万
展开全部
一条语句实现的方法不如存储过程方便,而且不如存储过程效率高,楼主写个存储过程会比较好

INSERT INTO log (date, ip) SELECT '2014-01-01' as date, '192.168.1.1' as ip FROM log WHERE NOT EXISTS ( SELECT * FROM log t WHERE t.data = '2014-01-01' AND t.ip = '192.168.1.1')
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-01-17
展开全部


-- 我这里假设你那个  id 是 自动递增的主键.

INSERT INTO log (date,  ip)
SELECT  '2014-01-01', '192.168.1.1' 
FROM  dual
WHERE  NOT  EXISTS (
  SELECT *
  FROM log  t
  WHERE  t.data = '2014-01-01'  AND  t.ip = '192.168.1.1'
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友561251d
2014-01-17 · TA获得超过185个赞
知道小有建树答主
回答量:324
采纳率:0%
帮助的人:108万
展开全部
mysql 有判断语法

有四种方式进行判断:1. SHOW TABLES LIKE '%tb_bp_d_case%';2. select TABLE_NAME from INFORMATION_SCHEMA.TABLES whereTABLE_SCHEMA='dbname' and TABLE_NAME='tablename' ;3. 如果表不存在就建立这个表,那么可以直接用 create table if not exists tablename 这样的指令来建立,不需要先去查询表是否存在。4. 从模板表创建表:create table if not exists like old_table_name;

自己去套
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yxj1124
2014-01-17 · 超过32用户采纳过TA的回答
知道答主
回答量:121
采纳率:0%
帮助的人:85.3万
展开全部
INSERT INTO log (date, ip) SELECT '2014-01-01' as date, '192.168.1.1' as ip FROM log WHERE NOT EXISTS (
SELECT *
FROM log t
WHERE t.data = '2014-01-01' AND t.ip = '192.168.1.1'
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式