Sql 将两个表插入到一个表中,同时忽略重复项
我正在尝试将两个MS Access表插入到一个MS Access表中。 在两个表中的一个表中,有一列包含重复值。 我目前的情况是: 问题在于,在XML_MESSAGE_STRUCTURE表中,S.ElementNo有时会多次通知,这就意味着我在目标表中也得到了特定ElementNo的多条记录。这是我不想要的 欢迎任何帮助Sql 将两个表插入到一个表中,同时忽略重复项,sql,vb.net,ms-access,Sql,Vb.net,Ms Access,我正在尝试将两个MS Access表插入到一个MS Access表中。 在两个表中的一个表中,有一列包含重复值。 我目前的情况是: 问题在于,在XML_MESSAGE_STRUCTURE表中,S.ElementNo有时会多次通知,这就意味着我在目标表中也得到了特定ElementNo的多条记录。这是我不想要的 欢迎任何帮助 Rico您可以按除ElementNo之外的所有字段分组,而不是选择DISTINCT。对于ElementNo,您可以选择Max(ElementNo): 最简单的方法是给eleme
Rico您可以按除ElementNo之外的所有字段分组,而不是选择DISTINCT。对于ElementNo,您可以选择
Max(ElementNo)
:
最简单的方法是给elementNo添加一个唯一的索引。所有的othjer字段也是一样的吗?如果是,请使用SELECT DISTINCT。如果没有,您将如何选择应插入哪些记录以及应排除哪些记录?请注意,这不是一个选项,因为将有重复的elementNo,但仅在TCParmID不相同的地方。换句话说,对于每个测试用例(TCParmID),每个元素都应该只有一个no。我的意思是索引TCParmID+ElementNo=Yes,重复项不好:
在tablename([TCParmID],[ElementNo])上创建唯一的索引
Dim MySQL As String = "INSERT INTO XML_TEST_CASE (" & _
"TCParmId, " & _
"TestCase, " & _
"MessageType, " & _
"FileNo, " & _
"InstructionNo, " & _
"TransactionNo, " & _
"ElementNo, " & _
"MessageSection, " & _
"ElementLevel, " & _
"FullElementPath, " & _
"ElementValue, " & _
"ElementValueNew, " & _
"NameSpace, " & _
"NameSpaceValue, " & _
"Attribute, " & _
"AttributeValue, " & _
"TestCaseDescription) " & _
"SELECT " & _
"P.TCParmId, " & _
"P.TestCase, " & _
"P.MessageType, " & _
"P.FileNo, " & _
"P.InstructionNo, " & _
"P.TransactionNo, " & _
"S.ElementNo, " & _
"S.MessageSection, " & _
"S.ElementLevel, " & _
"S.ElementPath + S.Element, " & _
"S.ElementValue, " & _
"S.ElementValue, " & _
"S.NameSpace, " & _
"S.NameSpaceValue, " & _
"S.Attribute, " & _
"S.AttributeValue, " & _
"P.TestCaseDescription " & _
"FROM XML_TEST_CASE_PARAMETER P, XML_MESSAGE_STRUCTURE S " & _
"WHERE S.MessageType = P.MessageType " & _
"AND P.TestCase = '" & MyTestCase & "' " & _
"AND P.MessageType = '" & MyMessageType & "' " & _
"AND P.FileNo = " & MyFileNo & " " & _
"AND P.InstructionNo = " & MyInstructionNo & " " & _
"AND P.TransactionNo = " & MyTransactionNo & ";"
Dim MySQL As String = "INSERT INTO XML_TEST_CASE (" & _
"TCParmId, " & _
"TestCase, " & _
"MessageType, " & _
"FileNo, " & _
"InstructionNo, " & _
"TransactionNo, " & _
"ElementNo, " & _
"MessageSection, " & _
...
"SELECT " & _
"P.TCParmId, " & _
"P.TestCase, " & _
"P.MessageType, " & _
"P.FileNo, " & _
"P.InstructionNo, " & _
"P.TransactionNo, " & _
"Max(S.ElementNo), " & _
"S.MessageSection, " & _
...
"FROM XML_TEST_CASE_PARAMETER P, XML_MESSAGE_STRUCTURE S " & _
"WHERE S.MessageType = P.MessageType " & _
"AND P.TestCase = '" & MyTestCase & "' " & _
"AND P.MessageType = '" & MyMessageType & "' " & _
"AND P.FileNo = " & MyFileNo & " " & _
"AND P.InstructionNo = " & MyInstructionNo & " " & _
"AND P.TransactionNo = " & MyTransactionNo & _
"GROUP BY " & _
"P.TCParmId, " & _
"P.TestCase, " & _
"P.MessageType, " & _
"P.FileNo, " & _
"P.InstructionNo, " & _
"P.TransactionNo, " & _
"S.MessageSection, " & _
...
";"