如何使用一条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这条记录,因为这条在数据库上有,就不可以写入数据库。
我就想要一条语句,实现以上功能 展开
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这条记录,因为这条在数据库上有,就不可以写入数据库。
我就想要一条语句,实现以上功能 展开
6个回答
展开全部
一条语句实现的方法不如存储过程方便,而且不如存储过程效率高,楼主写个存储过程会比较好
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')
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'
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
自己去套
有四种方式进行判断: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;
自己去套
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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'
)
SELECT *
FROM log t
WHERE t.data = '2014-01-01' AND t.ip = '192.168.1.1'
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询