我可以Scope_Identity()用来获取插入到标识列中的最后一个标识值。但是如何获取插入语句中插入的所有行的标识值?
例子
insert into DestinationTbl select * from SourceTbl where [col1]='xyz'
Run Code Online (Sandbox Code Playgroud)
上述语句可能会在一个表中插入多行。所以我想要插入的所有行的标识值。怎么做?
我正在尝试编写一个脚本,该脚本将获取超过 30 分钟未更新表的记录。
示例记录:
DNS_NAME LAST_PERF_TIME
esxnu01 2013-12-24 12:10:00.000
esxnu02 2013-12-24 12:05:00.000
esxnu01 2013-12-24 12:15:00.000
esxnu03 2013-12-24 12:05:00.000
esxnu04 2013-12-24 12:20:00.000
esxnu02 2013-12-24 12:25:00.000
CREATE TABLE [dbo].[VPX_HOST](
[DNS_NAME] [nvarchar](255) NOT NULL,
[LAST_PERF_TIME] [datetime] NULL)
INSERT INTO [dbo].[VPX_HOST]
([DNS_NAME],[LAST_PERF_TIME])
VALUES
('esxnu01', '2013-12-24 12:10:00.000')
,('esxnu02','2013-12-24 12:05:00.000')
,('esxnu01','2013-12-24 12:15:00.000')
,('esxnu03','2013-12-24 12:05:00.000')
,('esxnu04','2013-12-24 12:20:00.000')
,('esxnu02','2013-12-24 12:25:00.000')
Run Code Online (Sandbox Code Playgroud) 我有一个表格,其中包含每个项目的状态更改。项目可以多次进入和退出状态。
ItemTable(ItemId int、Status varchar(50)、DateOfChange 日期)
我需要拉出每次更改的日期。但是,由于可以为每个项目重复状态,我不能只执行 min(DateOfChange) 并找到出现的次数。
这是在 OLAP 环境中,用于提取此数据的子查询正在降低性能。
有没有办法通过分区/行号函数来提取这些东西?或者其他在 OLAP 中表现更好的东西?(这是在 SQL 2008 中。)
performance sql-server t-sql gaps-and-islands query-performance
是否可以找到特定查询将返回的数据大小?
例如,我可以使用以下内容来查找每个日期的行数:
select mydatecolumn, count(*)
from MyTable
where mydatecolumn < '01-JAN-2014'
group by mydatecolumn
Run Code Online (Sandbox Code Playgroud)
但是有没有办法找出这些行中包含的数据的大小?
例如
select mydatecolumn, "sizeofactualdata",
from mytable
where mydatecolumn < '01-JAN-2014'
group by mydatecolumn
Run Code Online (Sandbox Code Playgroud)
即使每个日期只有一个查询,这也不是问题。
假设我有两个表,表 A 和表 B。表 A 有一个插入触发器,可将记录插入表 B。表 B 有一个插入触发器,可将记录插入表 A。在这种情况下会发生什么?这两个触发器是否会一遍又一遍地将记录插入表中,直到数据库填满?这种情况发生的次数有限制吗?
任何人都可以帮我解决这个问题..
我的表中有一个列将持续时间存储在nvarchar格式为“00:00:00”的字段中。
如何计算平均持续时间?我阅读了其他一些博客,也使用了如下所示的投射技术,但无法解决我的问题...
cast(cast(avg(cast(CAST(Duration as datetime) as float)) as datetime) as time) AvgTime
Run Code Online (Sandbox Code Playgroud)
请帮忙...
这与我的问题有关如何在 SQL 服务器中找到上个月的第 XX 天?
会计月从每个月的 26 日开始。
我需要从任何日期找出:
例如:
CurrentDate - '2014-04-26'
Start_Of_Fiscal_Month = 2014-04-26
Day_Of_Fiscal_Month = 1
Run Code Online (Sandbox Code Playgroud)
CurrentDate - '2014-05-02'
Start_Of_Month = 2014-04-26
Day_Of_Fiscal_Month = 7
Run Code Online (Sandbox Code Playgroud) 我正在使用 SQL Server 2012 并且我想保留我预先存在的数据但导致 ID(身份)列跳过 2000 行。
为什么会这样?我有一个场景,我可能会在备用服务器上发生事务,我需要将其复制到当前服务器。我希望 ID 匹配。因此,我不希望此服务器上的任何新事务与我的备用服务器具有相同的 ID。
希望这是有道理的!!谢谢
我正在尝试编写一个有效的查询来删除数据块。为此,我希望通过使用主键来获取最旧的记录来避免索引扫描。但是,我看到返回了一些意想不到的结果。
我希望这个
SELECT TOP 15 OrderID FROM [Order]
Run Code Online (Sandbox Code Playgroud)
会给我最旧的 15 条记录,因为我可以依靠主键递增,因此表中的存储顺序将从低到高。
但是,这会返回不同的结果集
SELECT TOP 15 OrderID FROM [Order] ORDER BY DateCreated ASC
Run Code Online (Sandbox Code Playgroud)
这似乎是获得我需要的结果的更准确但更昂贵的方式。
令人费解的是,这
SELECT TOP 15 * FROM [Order]
Run Code Online (Sandbox Code Playgroud)
为此提供一组不同的 OrderID (PK)
SELECT TOP 15 OrderID FROM [Order]
Run Code Online (Sandbox Code Playgroud)
我知道http://msdn.microsoft.com/en-gb/library/ms189463.aspx解释说没有 ORDER BY 子句就不能保证订单,但期望 PK 为我订购并且无法解释两者之间的差异最后两个选择子句。
我正在构建一些脚本并发现一个烦恼是我无法提供表达式作为 EXEC 的参数。
这是我遇到的一个例子。我想使用包含数据库名称的一致格式设置各种项目。传递参数时我不能简单地连接字符串
EXEC msdb.dbo.sp_help_schedule
@schedule_name = 'FullBackup_'+@DatabaseName,
...
Run Code Online (Sandbox Code Playgroud)
相反,我必须为最终字符串声明一个变量并传递它......
DECLARE @ScheduleName varchar(100)
SET @ScheduleName = 'FullBackup_'+@DatabaseName
EXEC msdb.dbo.sp_help_schedule
@schedule_name = @ScheduleName,
...
Run Code Online (Sandbox Code Playgroud)
我在必要时动态建立了一个命令字符串,这可以实现这一点,但不想每次都这样做。这是 t-sql 的限制还是有解决方法?
t-sql ×10
sql-server ×8
date ×1
datetime ×1
identity ×1
insert ×1
performance ×1
size ×1
top ×1
trigger ×1