解决方案 »
- 给用户分配收缩日志的权限
- 这种查询怎么做.动态指定字段
- 查一个20几万条数据量的数据库 速度应该是多少??????????
- 很着急,请问SQL语句这么写为什么不行呢???
- 我用vb+sql2000做的程序,程序中添加数据部分用存储过程做的,程序在xp上运行没问题,但是在win2000profetional上运行就提示错误,不知道
- Sqlserver2000的JDBC驱动能否正常访问Sqlserver2005数据库?
- 南京下着大雪,小弟在线向同仁们问好!!!! 问一个模糊查询的问题!!
- 数据库修改数据问题
- 一个初学者的请求
- 大家好?
- 在SQL server如何生成如下的属性?
- 弱问题:sql 语句里面有类似 iif 的子句么?
inner join (select 住户编号,住户名称 from 住户资料) b on b.住户编号=['+@bmc+'].住户编号
inner join (select 住户编号,住户名称 from 住户资料
where id=(select MAX(id) from 住户资料 where 住户资料.住户名称=b.住户名称))a
on a.住户名称=b.住户名称 where ['+@bmc+']<>''住户资料''' 注意最后where条件,是否少了字段
, (select 住户编号,住户名称 from 住户资料) b ,
, (select 住户编号,住户名称 from 住户资料
where id=(select MAX(id) from 住户资料 where 住户资料.住户名称=b.住户名称))a
where b.住户编号=['+@bmc+'].住户编号 and a.住户名称=b.住户名称 and ['+@bmc+']<>''住户资料'''
而且不应该用where 而是要用and
而且不应该用where 而是要用and
不对啊,我把这个 where ['+@bmc+']<>''住户资料''' 删了还是不行,果然还是别名引用出错了
而且不应该用where 而是要用and
现在重新弄了一下,用2个游标嵌套来实现,但运行时提示游标已打开
Declare @bmc nvarchar(200)
Declare @zdmc nvarchar(100)
Declare @zhmc nvarchar(100)
Declare @sql nvarchar(1000)
Declare Cur Cursor For
select A.[name] as 表名称,B.name as 字段名称 from sysobjects A
inner join syscolumns B on A.id=B.id where B.[name]='住户编号'
and A.xtype='U' and left(a.name,1)<>'_' and left(a.name,3)<>'tmp'
and left(a.name,4)<>'AYHS'
Declare Cur2 Cursor For
select 住户名称 from 住户资料
Open Cur
Fetch next From Cur Into @bmc,@zdmc
while @@FETCH_STATUS =0
Open Cur2
Fetch next From Cur2 Into @zhmc
begin
set @sql='
update ['+@bmc+'] set 住户编号=a.住户编号 from ['+@bmc+']
inner join zhzl b on b.住户编号= ['+@bmc+'].住户编号
inner join (select 住户编号,住户名称 from 住户资料
where 住户资料.id=(select MAX(住户资料.id) from 住户资料 inner join zhzl on zhzl.住户名称=住户资料.住户名称
where 住户资料.住户名称=['+@zhmc+'] ))a
on a.住户名称=b.住户名称 '
exec(@sql)
Fetch next From Cur Into @bmc,@zdmc
Fetch next From Cur2 Into @zhmc
end
Close Cur2
Deallocate Cur2
Close Cur
Deallocate Cur
inner join (select 住户编号,住户名称 from 住户资料) b on b.住户编号=['+@bmc+'].住户编号
inner join (select 住户编号,住户名称,
row_number() over(partition by 住户名称 order by id desc) ''rn''
from 住户资料) a on a.住户名称=b.住户名称 and a.rn=1
where ['+@bmc+']<>''住户资料'''
create table #user(id int ,name varchar(100))
insert into #user (id,name) values(1,'a'),(2,'b') ,(3,'c'),(4,'a'),(5,'c')select * from #userupdate #user set id = b.id
from (select max(id) id ,name from #user group by name) b
where #user.name = b.nameselect * from #user
drop table #user/**
id name
1 a
2 b
3 c
4 a
5 c
--------------------------
id name
4 a
2 b
5 c
4 a
5 c
**/
create table #user(id int ,name varchar(100))
insert into #user (id,name) values(1,'a'),(2,'b') ,(3,'c'),(4,'a'),(5,'c')update table1 set id = b.id2
from (select a.id id1 ,b.id id2
from #user a
join (select max(id) id ,name from #user group by name)b
on a.name = b.name and a.id <> b.id
) b where table1.id = b.id1
drop table #user
而且不应该用where 而是要用and
where ['+@bmc+']<>''住户资料'''这两个是表吧。不是需要具体表的列吗