我想确保未插入多列的组合。
让我们说。
Emloyee
EmployeeId CatgoryId BusinessId
1 1 1
2 2 1
BusessCategory
CategoryId BusinessId
1 1
1 2
1 3
2 1
2 4
2 3
我必须确保在将数据插入表格时不会重复任何组合。
我的SQL查询会让我有点像
insert into employee(EmployeeId, CatgoryId, BusinessId)
select e.employeeid,e.categoryid,bc.BusinessId from employee e inner join BusessCategory bc on bc.CatgoryId = e.CatgoryId
答案 0 :(得分:2)
在所有相关列上定义唯一键。然后DB会在插入重复项之前抛出错误。
答案 1 :(得分:0)
@kumar:请在单独的链how do i insert multiple values in mysql and avoid duplicates
中找到此问题的副本答案 2 :(得分:0)
我有点不清楚您是否第一次尝试填充表而没有重复行,或者您是否想要创建一个不允许将来重复行(或可能两者)的表。如果你想防止重复的行向前发展,那么@ juergen的回答应该涵盖你。如果您想第一次使用一组不同的行填充表,请尝试以下查询:
INSERT INTO Table1 (A,B,C)
SELECT DISTINCT A,B,C FROM TABLE2
如果你想做这两件事,那么@jurgen和我的回答的组合应该涵盖你。
答案 3 :(得分:0)
如果在BusessCategory中重复bc.bc.CatgoryId,那么每次匹配的结果都会得到一行。
select e.employeeid,e.categoryid,bc.BusinessId
from employee e
inner join BusessCategory bc
on bc.CatgoryId = e.CatgoryId
简单的答案是
select distinct e.employeeid,e.categoryid,bc.BusinessId
from employee e
inner join BusessCategory bc
on bc.CatgoryId = e.CatgoryId
答案 4 :(得分:0)
这就是我要找的:
insert into employee(EmployeeId, CatgoryId, BusinessId)
select e.employeeid,e.CatgoryId,bc.BusinessId from employee e inner join BusessCategory bc
on bc.CategoryId = e.CatgoryId
where not exists(
select * from employee e1 where
bc.BusinessId = e1.BusinessId and e.CatgoryId = e1.CatgoryId and e.EmployeeId = e1.EmployeeId
)
欢迎任何更好的解决方案。
答案 5 :(得分:-3)
确切的语法可能不匹配,但下面的这个可能是一个基本的想法---
insert into table (A,B,C) values (a,b,c) where a is not in(select a from table where A=a and B=b and C=c)