日期:2014-05-19  浏览次数:20523 次

请问这个SQL语句是什么意思
在改别的写的一个程序中,有一个这个的SQL语句,不知是什么意思,麻烦哪位知道的说一下。不太明白这个SQL语句到底是更新什么东西。
update   tempdb..tmp_lenovo_iesa_t15
      set   prf_order=(select   count(*)     from
      (select   prf_total,od_satyp,el_no   from   tempdb..tmp_lenovo_iesa_t15
      group   by   prf_total,od_satyp,el_no)   b  
      where   b.prf_total   > =   a.prf_total)  
      from   tempdb..tmp_lenovo_iesa_t15   a


------解决方案--------------------
这是更新tempdb库里的tmp_lenovo_iesa_t15这张表的prf_order字段的值
不过他写的不太对
update tempdb..tmp_lenovo_iesa_t15
set prf_order=(select count(*) from
(select prf_total,od_satyp,el_no from tempdb..tmp_lenovo_iesa_t15
group by prf_total,od_satyp,el_no) b
where b.prf_total > = a.prf_total)
from tempdb..tmp_lenovo_iesa_t15 a
直接这样就可以了
update tempdb..tmp_lenovo_iesa_t15 a
set prf_order=(select count(*) from
(select prf_total,od_satyp,el_no from tempdb..tmp_lenovo_iesa_t15
group by prf_total,od_satyp,el_no) b
where b.prf_total > = a.prf_total)
------解决方案--------------------
更新prf_total,od_satyp,el_no不相同的记录数
------解决方案--------------------
这分该给 2 楼 把你的SQL的BUG都说出来了 不错
------解决方案--------------------
set prf_order=(select count(*) from
(select prf_total,od_satyp,el_no from tempdb..tmp_lenovo_iesa_t15
group by prf_total,od_satyp,el_no) b
where b.prf_total > = a.prf_total)

更新,使prf_order
=
select count(*) from
(select prf_total,od_satyp,el_no from tempdb..tmp_lenovo_iesa_t15
group by prf_total,od_satyp,el_no) b
where b.prf_total > = a.prf_total 查找出来的结果