作者horcy (HC)
看板Database
标题[SQL ] 逻辑上的问题 请不吝赐教
时间Wed Jan 9 15:03:55 2013
小弟与同事再编写SQL的update时,会有两种写法。
但对我的程式而言,因为只需要更新姓名及地址,
所以常常都没有注意到会不会有逻辑上的错误,
今天跟同事讨论,才听同事说我的写法1,
有逻辑上的问题,许多地方不能这样用。
以下是两个范例表格(环境为MsSQL server)
EmpSal 员工薪资 有可能位有重复资料。
name 姓名
address 地址
idno 身分证号
recoid 流水号(key) 与Emp_Old无关
Emp_Old 员工资料 是Views,经过设计,绝对不会有重复。
name 姓名
address 地址
idno 身分证号
recoid 流水号(key) 与EmpSal无关
以下是我说的两种写法
写法1.
update EmpSal set address=a.address, name=a.name
from Emp_Old a
where Emp.idno=a.idno
写法2.
update update EmpSal set address=a.address, name=a.name
from EmpSal e inner join Emp_Old a on e.idno=a.idno
同事的说法是,只要写法1产生出两个表格都会有重复值的情况,就有可能会出错。
比方说,某个职员有两个身分,需要两笔资料,就有可能写出错误的结果。
可是我的观念是,怎麽join就怎麽where不就好了?
因为实际经验只限於常操作的几个表格,
所以常常会有盲点,希望各位能够帮我指出盲点。
ps.我很对不起我以前的老师,我上课都在打混..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.131.34.172
1F:→ horcy:对了 因为很多原因 我们资料表都没有正规化 (接手系统) 01/09 15:07