两个sql的问题(200分)

  • 主题发起人 主题发起人 soul
  • 开始时间 开始时间
S

soul

Unregistered / Unconfirmed
GUEST, unregistred user!
1、如何用sql语句在同一个表中,用一条记录上的字段值去更新另一条记录的相同字段的值
注意是sql语句,因为某些场合无法使用记录集合,只能使用sql语句。
2、我的表中有一个唯一的字段id,其他都不唯一,且此id号是自增长的。那么在我addnew一个
记录后,我又如何知道新增记录的id呢,请注意其他都不唯一。目前这个问题对于sql server
解决起来有点繁,Access还好些,因为Access在新增未结束时这个id已经分配了,但sql server
好象要在提交后才有这个值。即便是用Tquery去做,addnew后要刷新才有,但一刷新可能
就被filter掉了,根本找不到位置。如果是用全集合,MovePrevious ,再MoveNext固然可
以,但对性能影响较大,不是好办法。
请大家出出主意
 
1.
update test
set testfiled=(select top 1 testfield from test where id=1000)
where id=100
2. Post后再运行select @@IDENTITY
 
1.你可以先把用来更新的记录先查询下来,获得需要更新的字段的值.再用更新语句来
更新,这样比较简单;
2.你可以通过加入数据库的先后顺序进行排序,最后一个即是你所添加的.
 
沈前卫:忘了说一件是这个字段如果是text类型的便不行了耶。我已经试过了。
象这样的update letters set content=b.content from letters b where id=23 and b.id=21
我也试过了,根本没反应 :-(
 
还有 Post后再运行select @@IDENTITY 那得锁表啊,否则正好有一个插进去了呢?
 
1.再想想
2。那做成存储过程吧,然后有存储过程返回select @@IDENTITY
 
2。那做成存储过程吧,然后有存储过程返回select @@IDENTITY
存储过程要处理text字段好麻烦哦。
 
可以先插入,取得id再修改。呵呵。反正id是要派用处的。
 
1.
非要使用标准的Sql语句吗,好象使用updatetext是可以的。在TQuery也应该可以运行。
 
能是最好了,总觉得可以啊。
比如以前我做个一删除重复记录的事情,最初用了4条sql,还要增加一个字段,最后只要很简单
一句话就搞定了。
 
删除重复记录:
delete xxxxx where not id in (select max(id) from xxxxx group by x,y,z)
x,y,z是判断重复的字段。
 
你是所删除所有重复的还是某仪个重复的?
 
如果重复3条删除2条。
 
delete xxxxx where not id in (select max(id) from xxxxx group by x,y,z)中
select max(id) from xxxxx group by x,y,z产生实际最后需要的记录集合,然后把
这些记录之外的记录删除。
 
恩。厉害。如果是Oracle就简单多了。
 
Sorry,仔细想来,Oracle好象也不是那么简单。 :)
 
呵呵,看看我们能不能找出连id都一样时的删除方法???
 
id都一样?
总有一个标准,应该没列外了。
 
可是update letters set content=b.content from letters b where id=22 and b.id=21
错在哪里呢?
 
后退
顶部