求SQL语句 满足条件插入

zxdyu2009 2011-05-15 08:50:14
问题如下:
假设有一张表名为tb_a 字段分别为id int(4)自增长的、sn varchar(32)、name varchar(32)、f float(11,1)。
现在要插入一行数据(1,'AA','NN',33.5) 条件是表中不存在某一行记录的sn和name与要插入的相同。

请各位帮忙,谢谢!
...全文
241 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2011-05-15
  • 打赏
  • 举报
回复
[Quote]组合的唯一键如何创建?[/Quote]MYSQL手册中搜索 CREATE INDEX 然后 看UNIQUE
zxdyu2009 2011-05-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acmain_chm 的回复:]
引用字段sn不唯一,name也不唯一,只有两者联合起来才唯一。对啊,就是对这两者创建组合的 主键 或者 唯一键。
[/Quote]
组合的唯一键如何创建?
ACMAIN_CHM 2011-05-15
  • 打赏
  • 举报
回复

[Quote]字段sn不唯一,name也不唯一,只有两者联合起来才唯一。[/Quote]对啊,就是对这两者创建组合的 主键 或者 唯一键。
zxdyu2009 2011-05-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lijinyingnet 的回复:]
先查询,条件是要插入的sn和name的值

select count(*) from tb_a where sn='AA' and name='NN'

如果返回值为0,则表示没有记录,就执行:
insert into tb_a (sn,name,f) values('AA','NN',33.5)

如果返回值不是0,则表示已有该条记录,不能插入
[/Quote]
这位兄弟,这个我也知道,能否用一个语句实现呢?
lijinyingnet 2011-05-15
  • 打赏
  • 举报
回复

先查询,条件是要插入的sn和name的值

select count(*) from tb_a where sn='AA' and name='NN'

如果返回值为0,则表示没有记录,就执行:
insert into tb_a (sn,name,f) values('AA','NN',33.5)

如果返回值不是0,则表示已有该条记录,不能插入
zxdyu2009 2011-05-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]
设置(SN,NAME)为主键或者唯一键即可。

然后可以使用 INSERT IGNORE 或者 INSERT ON DUPLICATE KEY UPDATE
[/Quote]
字段sn不唯一,name也不唯一,只有两者联合起来才唯一。
ACMAIN_CHM 2011-05-15
  • 打赏
  • 举报
回复
设置(SN,NAME)为主键或者唯一键即可。

然后可以使用 INSERT IGNORE 或者 INSERT ON DUPLICATE KEY UPDATE
zxdyu2009 2011-05-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 acmain_chm 的回复:]
引用组合的唯一键如何创建?MYSQL手册中搜索 CREATE INDEX 然后 看UNIQUE
[/Quote]
好的,用create unique index 索引名 on 表名 (列名1,,,,列名n)解决,多谢了!

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧