高难度问题,请高手帮解决一下

usernamezero 2008-12-22 10:35:10
现在数据库中跟据姓名查出两条记录(呈现在页面上) ,但是可以肯定这两条记录是一个人。如下:
字段 name sex brithdate arg idcard org
1 张三 男 123456 设计院
2 张三 1988-06-07 20 123456

现在要操作这两条记录进行比对 要删除第二条 (重点:要把第一条的信息从第二条中取到并补全第一条的空缺位置)
这样的话就会设计到一方面的问题 怎样判断第1条的哪些字段是空的。并把第2条的信息提取到第一条的空缺处



...全文
119 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
usernamezero 2009-01-05
  • 打赏
  • 举报
回复
谢谢楼上的各位
jdsnhan 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hebo2005 的回复:]
引用 5 楼 icss_zhen 的回复:
引用 3 楼 hebo2005 的回复:
引用 1 楼 mantisXF 的回复:
SQL code-- TRY IT ..
SELECT NAME,
MAX(SEX),
引用楼主 usernamezero 的帖子:
现在数据库中跟据姓名查出两条记录(呈现在页面上) ,但是可以肯定这两条记录是一个人。如下:
字段 name sex brithdate arg id…
[/Quote]

都为空的时候默认取第一条,哈哈。
zhoulp_2009 2008-12-23
  • 打赏
  • 举报
回复
update temp_tableName t set(SEX,BRITHDATE,ARG,IDCARD,ORG)=
(SELECT
MAX(SEX),
MAX(BRITHDATE),
MAX(ARG),
MAX(IDCARD),
MAX(ORG)
FROM temp_tableName TT
where t.name=tt.name GROUP BY NAME )
WHERE t.rowid = (SELECT MIN(rowid) row_id FROM temp_tableName ttt where t.name=ttt.name GROUP BY NAME );

DELETE FROM temp_tableName WHERE ROWID IN (SELECT MAX(ROWID) row_id FROM temp_tableName GROUP BY NAME);
zhoulp_2009 2008-12-23
  • 打赏
  • 举报
回复
update temp_tableName t set(SEX,BRITHDATE,ARG,IDCARD,ORG)=
(SELECT
MAX(SEX),
MAX(BRITHDATE),
MAX(ARG),
MAX(IDCARD),
MAX(ORG)
FROM temp_tableName TT
where t.name=tt.name GROUP BY NAME )
WHERE t.rowid = (SELECT MIN(rowid) row_id FROM temp_tableName ttt where t.name=ttt.name GROUP BY NAME );

DELETE FROM temp_tableName WHERE ROWID IN (SELECT MAX(ROWID) row_id FROM temp_tableName GROUP BY NAME);
zhoulp_2009 2008-12-23
  • 打赏
  • 举报
回复
update temp_tableName t set(SEX,BRITHDATE,ARG,IDCARD,ORG)=
(SELECT
MAX(SEX),
MAX(BRITHDATE),
MAX(ARG),
MAX(IDCARD),
MAX(ORG)
FROM temp_tableName TT
where t.name=tt.name GROUP BY NAME )
WHERE t.rowid = (SELECT MIN(rowid) row_id FROM temp_tableName ttt where t.name=ttt.name GROUP BY NAME )
libolibo888 2008-12-23
  • 打赏
  • 举报
回复
update table_name t set(SEX,BRITHDATE,ARG,IDCARD,ORG)=
(SELECT
MAX(SEX),
MAX(BRITHDATE),
MAX(ARG),
MAX(IDCARD),
MAX(ORG)
FROM TABLE_NAME TT
GROUP BY NAME where t.name=tt.name);
是正确的。
hebo2005 2008-12-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 icss_zhen 的回复:]
引用 3 楼 hebo2005 的回复:
引用 1 楼 mantisXF 的回复:
SQL code-- TRY IT ..
SELECT NAME,
MAX(SEX),
MAX(BRITHDATE),
MAX(ARG),
MAX(IDCARD),
MAX(ORG)
FROM TABLE_NAME TT
GROUP BY NAME;

引用楼主 usernamezero 的帖子:
现在数据库中跟据姓名查出两条记录(呈现在页面上) ,但是可以肯定这两条记录是一个人。如下:
字段 name sex brithdate arg idcard org
1 张三 男 …
[/Quote]

像arg字段,从数据上看应该取第二条,而idcard,则要取第一条
这种规律看不出来的,就很难去取舍了
icss_zhen 2008-12-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hebo2005 的回复:]
引用 1 楼 mantisXF 的回复:
SQL code-- TRY IT ..
SELECT NAME,
MAX(SEX),
MAX(BRITHDATE),
MAX(ARG),
MAX(IDCARD),
MAX(ORG)
FROM TABLE_NAME TT
GROUP BY NAME;

引用楼主 usernamezero 的帖子:
现在数据库中跟据姓名查出两条记录(呈现在页面上) ,但是可以肯定这两条记录是一个人。如下:
字段  name  sex  brithdate      arg    idcard    org
1 张三  男                          1234…

为空的好办,…
[/Quote]

为空的应该也没关系吧,lz试下下面的sql
update table_name t set(SEX,BRITHDATE,ARG,IDCARD,ORG)=
(SELECT
MAX(SEX),
MAX(BRITHDATE),
MAX(ARG),
MAX(IDCARD),
MAX(ORG)
FROM TABLE_NAME TT
GROUP BY NAME where t.name=tt.name);没有测试啊,不知道正确不,这样update后二条sql再随便delete掉一个都行。
icss_zhen 2008-12-22
  • 打赏
  • 举报
回复
1楼方法好,可以先将二条合并为一条,作为一条临时表,然后再更新第一条数据,再将第二条delete掉
hebo2005 2008-12-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mantisXF 的回复:]
SQL code-- TRY IT ..
SELECT NAME,
MAX(SEX),
MAX(BRITHDATE),
MAX(ARG),
MAX(IDCARD),
MAX(ORG)
FROM TABLE_NAME TT
GROUP BY NAME;

引用楼主 usernamezero 的帖子:
现在数据库中跟据姓名查出两条记录(呈现在页面上) ,但是可以肯定这两条记录是一个人。如下:
字段 name sex brithdate arg idcard org
1 张三 男 1234…
[/Quote]
为空的好办,两个都不为空的怎么办,取哪个?要有个标准
icss_zhen 2008-12-22
  • 打赏
  • 举报
回复
一定要删第二条吗?随便删一条行不?
mantisXF 2008-12-22
  • 打赏
  • 举报
回复
-- TRY IT ..
SELECT NAME,
MAX(SEX),
MAX(BRITHDATE),
MAX(ARG),
MAX(IDCARD),
MAX(ORG)
FROM TABLE_NAME TT
GROUP BY NAME;
[Quote=引用楼主 usernamezero 的帖子:]
现在数据库中跟据姓名查出两条记录(呈现在页面上) ,但是可以肯定这两条记录是一个人。如下:
字段 name sex brithdate arg idcard org
1 张三 男 123456 设计院
2 张三 1988-06-07 20 123456

现在要操作这两条记录进行比对 要删除第二条 (重点:要把第一条的信息从第二条中取到并补全第一条的空缺位置)
这样的话就会设计到一方面的问题…
[/Quote]

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧