有没有办法比较Transact-SQL中的两个位掩码,看看是否有任何匹配的位?我有一个User表,其中包含用户所属角色的位掩码,我想选择所有在提供的位掩码中具有任何角色的用户.因此,使用下面的数据,角色位6(设计师+程序员)应选择Dave,Charlie和Susan,但不能选择Nick.
User Table ---------- ID Username Roles 1 Dave 6 2 Charlie 2 3 Susan 4 4 Nick 1 Roles Table ----------- ID Role 1 Admin 2 Programmer 4 Designer
有任何想法吗?谢谢.
以下查询需要永远完成.但如果我删除前10条款,它会很快完成.big_table_1和big_table_2是2个表,有10 ^ 5条记录.
我曾经相信顶级条款会减少时间成本,但显然不在这里.为什么???
select top 10 ServiceRequestID
from
(
(select *
from big_table_1
where big_table_1.StatusId=2
) cap1
inner join
big_table_2 cap2
on cap1.ServiceRequestID = cap2.CustomerReferenceNumber
)
Run Code Online (Sandbox Code Playgroud) 我正在使用SQL Server 2008 R2,尝试计算移动平均值.对于我视图中的每条记录,我想收集250条先前记录的值,然后计算此选择的平均值.
我的视图列如下:
TransactionID | TimeStamp | Value | MovAvg
----------------------------------------------------
1 | 01.09.2014 10:00:12 | 5 |
2 | 01.09.2014 10:05:34 | 3 |
...
300 | 03.09.2014 09:00:23 | 4 |
Run Code Online (Sandbox Code Playgroud)
TransactionID是独特的.对于每一个TransactionID,我想计算列值的平均值,超过之前的250个记录.因此,对于TransactionID 300,收集前250行的所有值(视图按TransactionID降序排序),然后在MovAvg列中写入这些值的平均值的结果.我希望收集一系列记录中的数据.
sql t-sql sql-server-2008-r2 moving-average window-functions
我已经捕获了一个SQL Server 2012死锁图(使用Gail Shaw的查询),该图显示了一个进程,其中taskpriority ="10"被挑选为2个进程的死锁牺牲品,其中taskpriority ="0".
我的理解是首先检查死锁优先级,并选择较低优先级进程作为受害者.只有当所有过程都具有同等优先权时,其他因素才会相关.任何人都可以解释为什么DEADLOCK_PRIORITY可能不被尊重?
有趣的是,SET DEADLOCK_PRIORITY MSDN页面说HIGH映射到5,我的代码肯定使用HIGH,所以我不确定10来自哪里.
令人讨厌的是,受害者是一个重要的业务流程,而幸存者都是SSMS Intellisense查询.
编辑
首先,这个问题是关于为什么DEADLOCK_PRIORITY不会被尊重,而不是死锁是什么或如何防止它们或解决它们或导致下面示例中的那个.这些都是有趣的对话,但不是在这里.
其次,根据@SteveFord发现的链接,可能有相关的其他几个事实; 在此SQL Server上启用了锁定分区,并且SQL Server版本早于2012 CU6(当KB2776344中的修补程序发布时).
第三,对于那些感兴趣的人来说,这是一个消毒的死锁图,显示了被选为受害者的更高优先级的过程.我删除了SQL并更改了一些名称,其他一切都完好无损.
<deadlock>
<victim-list>
<victimProcess id="process5f390c8" />
</victim-list>
<process-list>
<process id="process5f390c8" taskpriority="10" logused="3200" waitresource="KEY: 6:281474978938880 (655334c51469)" waittime="1806" ownerId="296690694" transactionname="ALTER PARTITION FUNCTION" lasttranstarted="2018-01-29T11:59:36.140" XDES="0x886312d28" lockMode="X" schedulerid="9" kpid="32684" status="suspended" spid="86" sbid="0" ecid="0" priority="5" trancount="1" lastbatchstarted="2018-01-29T11:58:38.310" lastbatchcompleted="2018-01-29T11:58:38.310" lastattention="1900-01-01T00:00:00.310" clientapp="CLIENTAPP" hostname="HOSTNAME" hostpid="10912" loginname="DOMAIN\USERNAME" isolationlevel="read committed (2)" xactid="296690694" currentdb="6" lockTimeout="4294967295" clientoption1="673187936" clientoption2="128056">
<executionStack>
<frame procname="adhoc" line="2" stmtstart="138" sqlhandle="0x01000600a1f28605207939860500000000000000000000000000000000000000000000000000000000000000">
...removed...</frame>
<frame procname="mssqlsystemresource.sys.sp_executesql" line="1" stmtstart="-1" sqlhandle="0x0400ff7f427f99d9010000000000000000000000000000000000000000000000000000000000000000000000"> …Run Code Online (Sandbox Code Playgroud) 我要求一次在表格中插入大约2500-3000行数据.我需要为MySQL和SQL Server执行此操作.所以我找到的可能的解决方案是
cfquery在里面cfloop.cfloopinside cfquery生成sql语句就好INSERT INTO tbl VALUES((),(),()).但是这种语法的问题是它一次只能插入1000条记录.我需要更多.任何人都可以建议我什么是处理这种情况的最佳方法?
我想知道是否有人知道在"x"个临时表中均匀分布多个相似值的方法,确保'like'值(本例中相同的团队名称)永远不会集中到一个特定的表中.我要做的是为比赛创造热量,并在桌子之间平均分配球队.例如:
**Teams**
-----------
Los Angeles
New York
New York
Los Angeles
Florida
Florida
Arizona
Texas
Alabama
Alaska
New York
New York
New York
Run Code Online (Sandbox Code Playgroud)
我希望这个发行版最终会像这样,所有多个团队均匀分布在2(或3或4)个热点上:
**Heat One**
-------------
Los Angeles
New York
Florida
Arizona
Alabama
New York
New York
**Heat Two**
------------
Los Angeles
New York
Florida
Texas
Alaska
New York
Run Code Online (Sandbox Code Playgroud)