我有两个表,TABLESource是我在哪里可以将记录插入到TABLEDest中,
现在TABLESource可以包含重复的字段:
id code name
2 09 abc
3 10 uu
2 09 def
3 10 rr
2 09 gh
我必须首先在TABLEDest中插入所有唯一记录,id +代码是主键(唯一)
id code name
2 09 abc
3 10 uu
现在,最后,如果TABLESource发现重复的id和名称,它必须用TABLESource中找到的具有相同主键(id_name)的最新记录更新TABLEDest
id code name
2 09 gh
3 10 rr
我不知道该怎么做。请帮我。谢谢:)
答案 0 :(得分:0)
我建议迭代你的源表和源代码中的每一行:
Psudo Code:
//Get all source rows
query = 'SELECT * FROM TABLEsource'
rows = database.get(query)
//Iterate through all source rows
for each rows as row{
//Search dest table for a match
checkQuery = 'SELECT * FROM TABLEDest WHERE id = '+row.id
check = database.get(checkQuery)
//If we do get a match
if(check.rows > 0){
//Update the relevant row
query = 'UPDATE TABLEDest SET name = '+row.name+' WHERE id = '+check.id
database.query(query)
}else{
//Otherwise, append a new row to the dest table
query = 'INSERT INTO TABLEDest(id, code, name) '
+'VALUES('+row.id+'. '+row.code+', '+row.name+')'
database.query(query)
}
}
这是psudo代码,因此直接复制和粘贴不起作用,但它应该足以让您使用自己喜欢的语言来实现它。
答案 1 :(得分:0)
由于您无法订购行,我选择将min(name)作为name列的值。
insert into TABLEDest
select id, code, min(name)
from TABLESource
group by id, code