字段更新追加问题

zhangxm2015 2014-12-04 03:37:05
id 姓名 成绩 备注 subid
012 张三 123 不错 1
012 李四 45 需要努力 2


subid 姓名 成绩 备注
1 张三 品德优
2 李四



将表一中成绩和备注更新到表二中,其中成绩正常替换,备注表一中如果包含表二的备注不需要追加,否则追加(用逗号隔开)
其中subid相同都可以唯一确定一条记录

更新可能会执行多次,所以相同的备注只追加一次

追加用concat函数,可是如何实现只追加一次对相同的备注
...全文
142 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangxm2015 2014-12-04
  • 打赏
  • 举报
回复
还是trim给力!谢了
zhangxm2015 2014-12-04
  • 打赏
  • 举报
回复
还是trim给力!谢了
bw555 2014-12-04
  • 打赏
  • 举报
回复
引用 3 楼 bw555 的回复:
LTRIM,语句中已加,你去试试吧
右侧的逗号用rtrim 也可以用trim(both ',' from )把前后一起去除
bw555 2014-12-04
  • 打赏
  • 举报
回复
LTRIM,语句中已加,你去试试吧
zhangxm2015 2014-12-04
  • 打赏
  • 举报
回复
引用 1 楼 bw555 的回复:
update 表二 A
set (成绩,备注)=(
    select B.成绩,CASE WHEN  INSTR(A.备注,B.备注)>0 THEN A.备注 ELSE LTRIM(A.备注||','||B.备注,',') END
    from 表一 B where B.subid=A.subid
)WHERE EXISTS(select 1 from 表一 B where B.subid=A.subid)
问下 如果A.备注不为空,B.备注为空 , 他们中的逗号如何去掉 谢谢
bw555 2014-12-04
  • 打赏
  • 举报
回复
update 表二 A
set (成绩,备注)=(
    select B.成绩,CASE WHEN  INSTR(A.备注,B.备注)>0 THEN A.备注 ELSE LTRIM(A.备注||','||B.备注,',') END
    from 表一 B where B.subid=A.subid
)WHERE EXISTS(select 1 from 表一 B where B.subid=A.subid)

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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