none
TSQL语句 (需求高手帮助) 我是个菜鸟 谢谢大虾们的帮助。 RRS feed

  • 问题

  • 各位大侠们 ,我是个菜鸟 可能表达不清楚 见谅 啊。洒泪谢谢大虾们的帮助
    问题:  A表中 重复的数据(只是vchrPermissionDesc)名字重复 (见画圈处),
              需要大侠们 把  vchrPermissionDesc  重复的数据 根据inttype 为0,把  intintPermissionShut 改成1 ,目的:intintPermissionShut 为1 是不显示数据。

    2012年7月6日 6:06

答案

  • update A set intPermissionShut = 1 where inttype =0 and vchrPermissionDesc in (select vchrPermissionDesc  from bPermission group by vchrPermissionDesc having count(vchrPermissionDesc )>1)

    思路:

    思路就是更新表中inttype = 0的让intintPermissionShut = 1 并且统计我要更新的字段数据行是不是vchrPermissionDesc里的名字重复的

    • 已标记为答案 anhaisheng 2012年7月6日 9:02
    2012年7月6日 9:02

全部回复

  • 思路是,找出重复数据,然后update

    没有测试的代码:

    update t1 set t1.intintPermissionShut =1

    from tablename t1,(select vchrPermissionDesc  ,count(*) from tablename group by vchrPermissionDesc  having count(*)>1) t2

    where t1.vchrPermissionDesc  =t2.vchrPermissionDesc 


    family as water


    • 已编辑 Stone Z 2012年7月6日 8:24
    2012年7月6日 8:24
  • update A set intPermissionShut = 1 where inttype =0 and vchrPermissionDesc in (select vchrPermissionDesc  from bPermission group by vchrPermissionDesc having count(vchrPermissionDesc )>1)

    思路:

    思路就是更新表中inttype = 0的让intintPermissionShut = 1 并且统计我要更新的字段数据行是不是vchrPermissionDesc里的名字重复的

    • 已标记为答案 anhaisheng 2012年7月6日 9:02
    2012年7月6日 9:02
  • 谢谢您。。。我这个写出来了 
    2012年7月6日 9:02
  • update A set intPermissionShut = 1 where inttype =0 and vchrPermissionDesc in (select vchrPermissionDesc  from bPermission group by vchrPermissionDesc having count(vchrPermissionDesc )>1)

    思路:

    思路就是更新表中inttype = 0的让intintPermissionShut = 1 并且统计我要更新的字段数据行是不是vchrPermissionDesc里的名字重复的

    1. 使用 in 会导致查询效率很低。

    2.count(*) 效率比你直接count(字段)要效率高


    family as water

    2012年7月7日 6:10