我是mysql的新手.请帮忙.我有一张像这样的人.人们唯一的主要关键是身份证
id name age sex
1. John 16 M
2. Peter 18 K
Run Code Online (Sandbox Code Playgroud)
我想写一些sql来向人们插入一些行.但如果表中已存在该名称.我没有插入新行.例如,如果我插入名为John和Peter的行.我不插入行.我有一个变量名称为var_name;
我已经搜索了很长一段时间的网络.我使用以下网站推荐的sql
INSERT into People(name) values(var_name) where not exists(SELECT name from People
where name = var_name)
Run Code Online (Sandbox Code Playgroud)
但是sql语法错误出来了.为什么会这样呢?是否有任何快速的方法来实现我的目标.
执行此操作的最佳方法是在名称上创建唯一索引:
create unique idx_people_name on people(name)
Run Code Online (Sandbox Code Playgroud)
然后,当您插入时,使用on duplicate key update:
INSERT into People(name)
values(var_name)
on duplicate key update name = values(name);
Run Code Online (Sandbox Code Playgroud)
这update件作品什么都不做 - 这是一个"无操作".但这会将逻辑放入数据库并强制执行名称必须是唯一的.
为了使您的查询起作用,您需要insert . . . select.该values条款where不作声明:
INSERT into People(name)
select var_name
from dual
where not exists(SELECT name from People where name = var_name);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36 次 |
| 最近记录: |