日期:2014-05-17  浏览次数:20742 次

关于update语句的一点问题
我用
select distinct a.ndj,b.gebjj, b.* from jh_rkmx a,sphwphpc b
where a.djbh like 'JHB%' and a.spid=b.spid and a.pihao=b.pihao and a.pici=b.pici and a.ndj<>b.gebjj and b.ljshl<>'0'
能查询出几个数值 

但是为什么用
update b set b.gebjj=a.ndj from jh_rkmx a,sphwphpc b
where a.djbh like 'JHB%' and a.spid=b.spid and a.pihao=b.pihao and a.pici=b.pici and a.ndj<>b.gebjj and b.ljshl<>'0'
一直更新不过去,更新了没啥反映查询出来还是那些数值

------解决方案--------------------
你的update写的有问题打个断点观察你的update语句

------解决方案--------------------
update sphwphpc set sphwphpc.gebjj=jh_rkmx.ndj where jh_rkmx.djbh like 'JHB%' and jh_rkmx.spid=sphwphpc.spid and jh_rkmx.pihao=sphwphpc.pihao and jh_rkmx.pici=sphwphpc.pici and jh_rkmx.ndj<>sphwphpc.gebjj and sphwphpc.ljshl<>'0'
把你的update改成这样试试,因为之前你写的语法有问题

------解决方案--------------------
建议查看一下sphwphpc表上是否有触发器.


------解决方案--------------------
SQL code
UPDATE sphwphpc SET gebjj=a.ndj 
FROM jh_rkmx a
where a.djbh LIKE 'JHB%' AND a.spid=sphwphpc.spid 
AND a.pihao=sphwphpc.pihao AND a.pici=sphwphpc.pici 
AND a.ndj<>sphwphpc.gebjj AND sphwphpc.ljshl<>'0'

------解决方案--------------------
update 后面应该是数据表名,不用别名
------解决方案--------------------
如果update中的from子句出现了别名,那么update后面就要用别名。我觉得触发器的可能性比较大。我一直这样update都没出现过问题。
------解决方案--------------------
语句应该是没有问题的。
------解决方案--------------------
你确定第一条语句查出来的结果a,b两个表的数据都不是空的吗,

肯定不是触发器问题,批量修改是不过触发器的

试一下left join 更新一下看行不