2012-11-03 47 views
0

连接两个表我有两个表这样关于具有唯一索引

表 “X”

idX(pk) contentX(char) 
10   foo1 
21   foo2 
34   foo3 
45   foo4 

表 “Y”

idY(pk) contentY(char) 
11   boo1 
22   boo2 
33   boo3 
40   boo4 

而且加盟后,intsert到表并成为此

idNew(pk) idX(UQ) content(char) idY(UQ) content(char) 
    1   10   foo1   11   boo1 
    2   21   foo2   22   boo2 
    3   34   foo3   33   boo3 
    4   45   foo4   40   boo4 

SQL我用的就是这样的

INSERT INTO DataBase.newtable(idX, contentX,idY,contentY) 
     SELECT X.idX, Y.idY, contentX, contentY 
       FROM DataBase.X, DataBase.Y, ; 

但SQL语句不能插入到newtable的,因为IDX和IDY需要是唯一的价值。我能做什么?

+0

新表上的索引是什么?如果新表中的每个字段都是单列索引,那么您的示例应该没有任何问题。 –

+0

该索引是新表上的新索引。如果我使用我的sql语句,newtable将是(X x Y)的结果。 – Samuel

+0

和SQL显示“错误 - 1062:重复条目”错误。 – Samuel

回答

0

您需要指定该插入的连接字段,否则您将获得两个表的笛卡尔乘积(即,16行)。如果在idx和idy字段上有唯一索引,则此约束会导致插入失败。

+0

但是如何在连接后对不需要的行进行分类。这是我真的不知道如何实现的部分。 – Samuel