如果有任何疑问,请在一行中删除重复的条目,请告诉我。
例如:我有一张名为9个电话号码的表格:
Name Tel0 Tel1 Tel2 Tel3 Tel4 Tel5 Tel6 Tel7 Tel8
John 1 2 2 2 3 3 4 5 1
最终结果应如下所示:
Name Tel0 Tel1 Tel2 Tel3 Tel4 Tel5 Tel6 Tel7 Tel8
John 1 2 3 4 5
问候 麦迪
答案 0 :(得分:1)
我担心保留这种格式会比按照我的建议将表格分成两部分更复杂。如果您坚持保留当前架构,那么我建议您查询该行,组织应用程序代码中的字段,然后对数据库执行更新。
您也可以尝试使用SQL UNION运算符为您提供数字列表,默认情况下UNION将删除所有重复的行:
SELECT Name, Tel FROM
(SELECT Name, Tel0 AS Tel FROM Person UNION
SELECT Name, Tel1 FROM Person UNION
SELECT Name, Tel2 FROM Person) ORDER BY Name ;
哪个应该给你一个这样的结果集:
John|1
John|2
然后,您必须逐步执行结果集并将每个数字保存到一个单独的变量中(跳过那些不存在的变量),直到" Name"现场变化。
Tel1 := Null; Tel2 := Null;
Name := ResultSet['Name'];
Tel0 := ResultSet['Tel'];
ResultSet.Next();
if (Name == ResultSet['Name']) {
Tel1 := ResultSet['Tel'];
} else {
UPDATE here.
StartAgain;
}
ResultSet.Next();
if (Name == ResultSet['Name']) {
Tel2 := ResultSet['Tel'];
} else {
UPDATE here.
StartAgain;
}
我不建议你这样做,使用关系数据库是非常糟糕的,但是一旦用真实语言实现并调试它应该有效。