M Mary Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-01 #1 我有一个查询可能会返回超过3000条的记录,于是我想用select top 100…的语句先显示 100条记录(每页20条),问题是当看完这100条记录后,该怎样用SQL 语句再接下去查询呢?
Q QuickSilver Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-01 #3 select identity(int,1,1) as tmpid,* into #temp from tablename AAA 生成临时表 select * from #temp where tmpid>200 and tmpid<=300 从临时表取出想要的数据
select identity(int,1,1) as tmpid,* into #temp from tablename AAA 生成临时表 select * from #temp where tmpid>200 and tmpid<=300 从临时表取出想要的数据
C chenxz Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-01 #4 这也是一个方法了。我当时是直接在表里加了一个identity字段而不是用临时表。 有不用字段登记的方法吗?
Q QuickSilver Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-01 #5 如果你查询的数据中有关键字段就可以用一条SQL语句来达到要求 不过效率是不如用临时表的
M Mary Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-01 #6 QuickSilver, 我试了一下你的方法,果然很灵,先谢了。 只是我还有一点疑问: 当查询全部结束后,是否需要用‘drop table'语句删除这个临时表呢? (我是用在asp程序中,不知道何时用户会退出该查询功能) 还有就是为什么我把两个语句(一个创建临时表,一个查询临时表)放在同一个 SQL Server的Query窗口中时,执行得很好,而当我把第二个查询放在另一个窗口中时, 会提示Invalid object name '#temp'. 谢谢!
QuickSilver, 我试了一下你的方法,果然很灵,先谢了。 只是我还有一点疑问: 当查询全部结束后,是否需要用‘drop table'语句删除这个临时表呢? (我是用在asp程序中,不知道何时用户会退出该查询功能) 还有就是为什么我把两个语句(一个创建临时表,一个查询临时表)放在同一个 SQL Server的Query窗口中时,执行得很好,而当我把第二个查询放在另一个窗口中时, 会提示Invalid object name '#temp'. 谢谢!
Q QuickSilver Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-01 #7 临时表 临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。 有本地和全局两种类型的临时表,二者在名称、可见性和可用性上均不相同。 本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的; 当用户从 Microsoft&reg; SQL Server&#8482; 2000 实例断开连接时被删除。全局临时表的 名称以数学符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用 户从 SQL Server 断开连接时被删除。 例如,如果创建名为 employees 的表,则任何人只要在数据库中有使用该表的安全 权限就可以使用该表,除非它已删除。如果创建名为 #employees 的本地临时表, 只有您能对该表执行操作且在断开连接时该表删除。如果创建名为 ##employees 的 全局临时表,数据表中的任何用户均可对该表执行操作。如果该表在您创建后没有其 他用户使用,则当您断开连接时该表删除。如果该表在您创建后有其他用户使用,则 SQL Server在所有用户断开连接后删除该表。 以上是MS SQL中对临时表的说明。 1、如你不放心,可以加入drop table语句来自己删除临时表。 2、创建的是本地临时表,只对当前连接可见,所以在另一个窗口中是找不到#temp表的。
临时表 临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。 有本地和全局两种类型的临时表,二者在名称、可见性和可用性上均不相同。 本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的; 当用户从 Microsoft&reg; SQL Server&#8482; 2000 实例断开连接时被删除。全局临时表的 名称以数学符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用 户从 SQL Server 断开连接时被删除。 例如,如果创建名为 employees 的表,则任何人只要在数据库中有使用该表的安全 权限就可以使用该表,除非它已删除。如果创建名为 #employees 的本地临时表, 只有您能对该表执行操作且在断开连接时该表删除。如果创建名为 ##employees 的 全局临时表,数据表中的任何用户均可对该表执行操作。如果该表在您创建后没有其 他用户使用,则当您断开连接时该表删除。如果该表在您创建后有其他用户使用,则 SQL Server在所有用户断开连接后删除该表。 以上是MS SQL中对临时表的说明。 1、如你不放心,可以加入drop table语句来自己删除临时表。 2、创建的是本地临时表,只对当前连接可见,所以在另一个窗口中是找不到#temp表的。
C chenxz Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-01 #8 临时表只能被当前连接的session(会话)使用,当session结束时,系统会自动删除它, 所以没什么必要,是不用删除他的。