delete from 你的表名 where exists(select * from 你的表名 a where a.id=你的表名.id and a.otime>你的表名.otime) --delete from 后的表名不能用别名的,但where里涉及的表名可以用别名
to: victorycyz(中海) 我没有太明白你写的,是不是: exec ( 'delete from ' +表名 + ' a where a.OTIME not in (select max(b.OTIME) from ' + 表名 + ' b group by b.id)' ) 怎么不行呢? to:pbsql(风云) 如果是远程数据库的表该怎么办呢? 比如你的表名=[服务器名].[数据库名].[表名],应该怎么写?谢谢各位!
[服务器名].[数据库名].[dbo].[表名] or [服务器名].[数据库名]..[表名]
可是在你的语句里 delete from 你的表名 where exists(select * from 你的表名 a where a.id=你的表名.id and a.otime>你的表名.otime) 如果是远程的表[服务器名].[数据库名]..[表名] 改后成了: delete from [服务器名].[数据库名]..[表名] where exists(select * from [服务器名].[数据库名]..[表名] a where a.id名 =[服务器名].[数据库名]..[表名].id and a.otime>[服务器名].[数据库名]..[表名].otime) 这样[服务器名].[数据库名]..[表名].id 提示前缀太多。
select * from (select * from bfhftbal a where not exists(select 1 from 你的表 b where a.ID=b.ID and a.otime<b.otime) a
上一句有误! select * from 你的表 a where not exists(select 1 from 你的表 b where a.ID=b.ID and a.otime<b.otime)
MS SQL可以使用表的转义名:Select a.id,b.otime from (select * from tableAname where a.id=b.id) as a tableBname as b 试试!!
where exists(select * from 你的表名 a where a.id=你的表名.id and a.otime>你的表名.otime)
语法是一样的,不过,表名不能是变量。exec ( 'delete from ' + @表名变量 + ' a where a.otime not in (select max(b.otime) from ' + @表名变量 + ' b group by b.id)' )
'
也有类似的问题,ghosthjt(天煞孤星)写的从远端数据库更新本地的可以,如果用本地数据去更新远端的表就有问题,请各位看看有没有什么好办法?
where exists(select * from 你的表名 a where a.id=你的表名.id and a.otime>你的表名.otime)
--delete from 后的表名不能用别名的,但where里涉及的表名可以用别名
我没有太明白你写的,是不是:
exec ( 'delete from ' +表名 + ' a where a.OTIME not in (select max(b.OTIME) from ' + 表名 + ' b group by b.id)' )
怎么不行呢?
to:pbsql(风云)
如果是远程数据库的表该怎么办呢?
比如你的表名=[服务器名].[数据库名].[表名],应该怎么写?谢谢各位!
or
[服务器名].[数据库名]..[表名]
delete from 你的表名
where exists(select * from 你的表名 a where a.id=你的表名.id and a.otime>你的表名.otime)
如果是远程的表[服务器名].[数据库名]..[表名] 改后成了:
delete from [服务器名].[数据库名]..[表名]
where exists(select * from [服务器名].[数据库名]..[表名] a where a.id名 =[服务器名].[数据库名]..[表名].id and a.otime>[服务器名].[数据库名]..[表名].otime)
这样[服务器名].[数据库名]..[表名].id 提示前缀太多。
from (select *
from bfhftbal a
where not exists(select 1 from 你的表 b where a.ID=b.ID and a.otime<b.otime) a
select *
from 你的表 a
where not exists(select 1 from 你的表 b where a.ID=b.ID and a.otime<b.otime)
试试!!