测试设置
我有一个Server 2014和一个简单的表MyTable,其中包含Code (int)和Data (nvarchar(50))列,没有为该表创建索引。
表中有4项记录,其方式如下:
1, First
2, Second
3, Third
4, Fourth
然后在事务中运行以下查询:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
BEGIN TRANSACTION
DELETE FROM dbo.MyTable
WHERE dbo.MyTable.Code = 2
我有一个受影响的行,我不发出提交或回滚。
接下来,我开始另一项
在查询中使用SQL Server TOP子句时,SQL Server引擎是否会在满足需要返回的TOP X时停止搜索行?
考虑以下查询(假设some_text_field是唯一的,并且没有为全文索引设置):
SELECT
pk_id
FROM
some_table
WHERE
some_text_field = 'some_value';
和
SELECT TOP 1
pk_id
FROM
some_table
WHERE
some_text_field = 'some_value';
第一个查询需要搜索整个表,并返
我在SQL Server Management studio 2005中执行了以下查询,但未提交事务。
begin transaction tran1
insert into errorlog (errorlogid,OCCURREDTIME,MESSAGE) values (10002,0,'');
(数据未提交)。同时,在另一个查询窗口中,我执行以下查询,
select * from errorlog;
但是它正在等待事务tran1完成(由于锁)。
所以我执行了带有nolock选项的查询(从另一个查询窗口)
select * from errorlog with (NOLO
SQL Server:如何持有select查询的排它锁?对于mysql,
select * from Employee e
where e.id=123
for update
其他并发事务无法读取或写入所选行。
如何在SQL server上实现同样的功能?
SELECT *
FROM Employee e
WITH (HOLDLOCK, ROWLOCK)
WHERE e.id = 123;
对于(HOLDLOCK,row LOCK ),它是否持有所选行的读锁定?有了读锁,其他事务仍然可以读取锁定的行,对吗?
我希望像Sql Server Management Studio那样从长查询中获取数据。我的意思是,一旦从服务器(在本例中为SQL server 2008)接收到少量数据,它就会立即显示出来。
我使用的是C#和NET3.5。我已经阅读了有关BeginExecuteReader的文档:此方法异步启动查询,但读取操作是同步完成的。
不幸的是,在谷歌搜索这个的时候,我没有找到任何现实生活中的例子:-(你能在这个话题上帮我吗?
我的查询很简单:SELECT [...] FROM [...] WHERE [...]
但是涉及到很多行,我想向用户展示匹配查询的第一行,而不是等待整个操作完成。
非常感谢!
我需要检索一个范围的记录,我应该跳过和采取。然而,我在本地SQL Server和SQL Azure上运行都得到了结果,但是时间有很大的差异。这两个数据库具有相同的索引。
例如,我有一个包含700万条记录的表,查询如下: SELECT TOP(100) a.Time,a.SiteID FROM (SELECT a.Time,a.SiteID,row_number() OVER (ORDER BY a.Time DESC) AS row_number FROM table AS a WHERE a.SiteID = 1111) AS a WHERE row_number > 632900
在
如果第一个表为空,我如何才能使查询从另一个表中进行选择。 下面是我的C#程序中的当前查询,我正在使用SQL Server。 private const string sql = @'SELECT TOP (1) (LOCALTIME) from dbo.[devicemessage] order by (localtime) desc; 所以这段代码所做的就是从第一行中获取localtime列中的值,这行是按localtime desc排列的;最新的计时。 我想做的是这样的: If dbo.[devicemessage] is empty select top (1) (localt
有使用Datacom的Java/Groovy开发人员吗?
看起来Datacom的Java驱动程序不会让我做这样的事情:
select top n column from table
或
Order By Rnd
而不抛出语法错误异常。
我尝试做的要点是从表中随机选择top _N或随机选择min。随机化是至关重要的。
此查询在"group by“行失败:
Select min(column) as columnAlias From table
Inner Join anotherTable On table.column = anotherTable.column
Group By Rn
我对SQL Server 2000和包含大量条件的查询有问题。当将这些查询发送到Server时,根据查询(为可读性而编辑的错误消息)之一得到以下错误消息之一:
[Microsoft][ODBC SQL Server Driver][SQL Server]
SqlDumpExceptionHandler:
Process 61 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION.
SQL Server is terminating this process. (SQL-HY000)
或
[Microsoft][ODBC
我在SQL Server 2008中使用全文搜索。以下查询
select * From MyTable where contains( *, 'FLOW AND VALVE')
返回两行:
1. FLOW CONTROL VALVE
2. FLOW VALVE
但是下面的查询
select * From MyTable where contains( *, '"FLOW AND VALVE"'))
仅返回一行:
1. FLOW CONTROL VALVE
为什么第二个查询不返回第二行?
我使用ADO DataReader从server获取行。由于DataReader没有记录计数,所以我需要自己获取记录计数。因此,在我的示例中,我希望将传递给动态类的原始sql语句放在子查询中。
示例
SELECT
id,
title,
value
FROM table
WHERE id = 1234
ORDER BY title
应该是
SELECT COUNT(*)
FROM (
SELECT id,
title,
value
FROM t
我正在尝试检查存在的临时表,如果是的话,将其放在使用pyodbc的Server中。查询在management中工作,但在python中我得到了错误。
以前的SQL不是一个查询。
cnxn = pyodbc.connect('APP=MyApp;DRIVER={SQL Server Native Client 10.0};SERVER=powerapp6-WRON;DATABASE=ICP;DSN=myserver;Trusted_Connection=yes')
cursor = cnxn.cursor()
cnxn.commit()
for mc in range(
我有一个流表(内存表)和一个脚本,这是插入到这个表(从1行/分钟到100行/秒)。我需要每5秒获取1000行,我的意思是选择前1000行,然后删除所选行。
我的select查询非常简单:
SELECT * FROM vdp_stream WHERE user=xxx
我的问题是实际上我不能查询DELETE sql,因为在I SELECT和DELETE之间可能会添加一些新行。我说的对吗?是否有从表中获取行的解决方案?
更新我的表结构:
vdp_stream
---------------------
user CHAR(30)
x INT
y INT
我使用此查询从SQL Server数据库的表中提取一些行。但是查询总是返回0行。没有错误,但此查询不匹配任何行。
string name = //string data from http request
var apriori = db.Aprioris.SqlQuery("Select top 5 * from Apriori where Antecedent LIKE '%@name%' ", new SqlParameter("@name", name)).ToList();
我尝试使用=而不是LIKE,但在这次竞赛中我应该使用LI
让我们有以下数据
IF OBJECT_ID('dbo.LogTable', 'U') IS NOT NULL DROP TABLE dbo.LogTable
SELECT TOP 100000 DATEADD(day, ( ABS(CHECKSUM(NEWID())) % 65530 ), 0) datesent
INTO [LogTable]
FROM sys.sysobjects
CROSS JOIN sys.all_columns
我要计算行数、去年行数和最后十年行数。这可以使用条件聚合查询或使用子查询实现,如下所示
-- condi
在将应用程序从SQL 2005移植到SQL Server Compact Edition时,我发现需要移植以下命令:
SELECT TOP 1 Id FROM tblJob WHERE Holder_Id IS NULL
但是SQL Server Compact Edition不支持TOP关键字。如何移植此命令?
我想选择一个用户是否产生了超过1000个日志。考虑到这些查询,我让SQL Server Studio显示估计的执行计划。 select count(*) from tbl_logs where id_user = 3
select 1 from tbl_logs where id_user = 3 having count(1) > 1000 我认为第二个应该更好,因为它可以在SQL Server找到1000行时立即返回。而第一个函数返回实际的行数。 另外,当我分析查询时,它们在读取、CPU和持续时间方面是相等的。 对我的任务来说,最有效的查询是什么?
我有一个select查询,它返回大约1000万行,然后我需要将它们插入到一个新表中。
我希望性能是可以的,所以我想将它们分批插入到新表中,每批10000个。为了给出一个例子,我在下面创建了一个简单的select查询
Insert into new table
Select top 10000 * from applications
但是现在我需要获取接下来的10000行并插入它们。有没有一种方法可以遍历百万行,以10000行为一批插入它们?我正在使用sql server 2008。
我有一个包含3列的表:"Id","A","B“。所有这些都是可搜索的。Id是标识,它只用于搜索精确的行,所以它很清楚。但我对"A“和"B”有疑问。我在我的应用程序中有3个搜索案例:按"A“搜索,按"B”搜索,同时按"A“和"B”搜索。所以我不确定该选择哪种索引类型。我应该使用两个单列索引还是一个多列索引?或者将单列索引与多列索引(总共3个索引)结合使用会更好?我真的不关心插入/更新/删除持续时间,我的目标是让SELECT尽可能快。我使用SQL Server 2017。谢谢。
我确实有多个select查询,我想对SQL server执行这些查询来执行一些数据验证。
Select top 1 1 from tbl1 where somecondition = 1
UNION
Select top 1 1 from tbl2 where somecondition = 1
UNION
Select top 1 1 from tbl3 where somecondition = 1
我想要的是,如果这三个select语句中的任何一个语句返回任何记录,那么数据验证就应该失败。一种方法是按顺序运行它们并检查结果。但是,为了提高性能,我正在考虑应用UNION运算符,以便这些查询
我正在尝试运行此查询SELECT * FROM Student WHERE DIFFERENCE(FirstName,'Joe')>=2。我使用的是SQL Server CE数据库。我每次都会遇到一个The function is not recognized by SQL Server Compact Edition.错误.如何在SQL Server CE和VB.NET中实现Soundex搜索
我用SSRS编写的查询中有一部分不能按我需要的方式工作。实际情况是,我正在尝试创建一个下拉参数,其中包含一个列中的值列表-我们将其称为Column5。问题是该列中的一些行是空白的;它们不是null,它们只是完全由空格组成。因此,它们不会显示在参数的值列表中,这意味着这些行将被完全忽略。
我尝试做的事情是这样的:
SELECT [...stuff...] CASE WHEN (RTRIM(LTRIM(Column5)) = '') THEN 'None' ELSE Column5 END AS ColumnAlias
我已经尝试了上面的和一些变体,但似乎都不起作用
下面有一个查询,我没有fullname字段,但是queryText输入可以有全名。我的firstName或lastName搜索有效,但用户提供的名字和姓氏都不起作用。
@queryText of
John Works
Doe Works
John Doe Does not work
CREATE FULLTEXT INDEX ON [HK].[User]
(
UserName,
FirstName,
LastName,
NickName,
EmailAddress,
WorkPhone
)
KEY INDEX [PK_HK.User]
是否可以从一个查询中检索多个group by结果?
目前,我有一个自由文本图书标题搜索系统,它返回前X行:
首先,它查询书名
SELECT TOP 16 grouped_location, grouped_author, book_title
FROM books
WHERE book_title like '%foo%'
然后查询位置组
SELECT grouped_location, COUNT(*)
FROM books
WHERE book_title like '%foo%'
GROUP BY grouped_loc
执行此查询时,SQL Server选择了错误的执行计划,原因是什么?
SELECT top 10 AccountNumber , AVERAGE
FROM [M].[dbo].[Account]
WHERE [Code] = 9201
Go
SELECT top 10 AccountNumber , AVERAGE
FROM [M].[dbo].[Account] with (index(IX_Account))
WHERE [Code] = 9201
SQL Server为该查询选择聚集PK索引,运行时间= 78254毫秒,但如果我强制SQL Ser
如果我在IF EXISTS条件中编写两个SELECT语句,并且在这两个select查询之间有一个AND子句,那么即使第一个SELECT返回false,这两个查询也会被执行吗?
IF EXISTS (SELECT....) AND EXISTS(SELECT ....)
BEGIN
END
在这种情况下,SQL Server引擎是否同时执行这两条SQL语句?
谢谢Krish
我正在尝试从一个远程SQL Server检索大约2000亿行。为了优化这一点,我限制了我的查询只使用索引列作为过滤器,并且只选择列的一个子集,使查询看起来像这样:
SELECT ColA, ColB, ColC FROM <Database> WHERE RecordDate BETWEEN '' AND ''
但看起来,除非我将查询限制在几个小时的时间窗口内,否则查询在所有情况下都会失败,并显示以下错误:
OLE DB provider "SQLNCLI10" for linked server "<>"
我正在尝试用if语句创建sql server过程。对于ms sql server,我是新手,但是我尝试使用以下语句,但它给了我以下错误:Msg 116、级别16、状态1、过程te、第9行--当子查询未引入时,只能在select列表中指定一个表达式
这里是我写的代码
CREATE PROCEDURE test as
BEGIN
SET NOCOUNT ON;
if (select COUNT(load),load,contractor_id from [test].[dbo].[cont]
group by load,contractor_id
having load = (selec