如果我需要检查整个表以查看条件是否为真(例如,每个Ticket列都有一个带有特定后缀的ID).
性能明智的方法是什么?该表非常大,所以如果我遍历每一行,那么很多时候都会访问数据库.游标很慢,所以这不是一个优雅的解决方案
此外,对于将来,您始终可以验证您的参数,但过去情况并非如此.
我收到此错误.我正在做的是尝试从一个表和一个数据库中获取数据并将其放入另一个数据库和表中.表格并不完全相同.我正在使用FETCH游标,因此我从db1表中获取第一行,然后将每个列值放入声明的变量中.然后我将insert语句运行到db2表中并获取下一个值.这一切似乎都正常工作,因为它运行良好,但最后我得到这个错误,
关键字"table"附近的语法不正确.
整个事务语句在TRY/CATCH中,在CATCH块中具有错误处理表达式.除此之外我不知道是什么原因引起的.请帮忙.
这是代码
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRANSACTION
--TURN OFF ITENDITY COLUMNS
SET IDENTITY_INSERT [DB].[dbo].[TEST] ON
--TURN OFF ALL CONSTRAINTS
ALTER TABLE [DB].[dbo].[TEST] NOCHECK CONSTRAINT ALL
-- Insert statements for procedure here
DECLARE @ID int,
@DT datetime,
@PID varchar(10),
@AREA varchar(20)
DECLARE FETCH_TEST CURSOR FOR
SELECT [ID]
,[Date]
,[PID]
,[Area]
FROM [OLDDB].[dbo].[TEST] as db1
OPEN FETCH_TEST;
FETCH NEXT FROM FETCH_TEST …Run Code Online (Sandbox Code Playgroud) 我们的原始数据库为人名命名为first,middle,last.我们现在创建了名为firstname,middlename和lastname的字段.在我们进行此转换的过程中,我创建了一个触发器,可以在前一个字段收到更新或插入的任何时候将数据从第一个名称复制到第一个名称,从中间名到中间名,从最后一个到最后一个名称.问题是当我们批量上传文件到我们的数据库时,它会减慢一切,并可能导致其他事件超时.
以下是我的代码:
USE [Database]
GO
/****** Object: Trigger [dbo].[CopyFirstName] Script Date: 07/15/2009 08:35:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[CopyFirstName]
ON [dbo].[Patients]
AFTER INSERT,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF UPDATE([First]) BEGIN
SET NOCOUNT ON;
declare @ChangedField nvarchar(50);
select @ChangedField = [First] from inserted
update dbo.Patients set FirstName = @ChangedField where [First] = @ChangedField
END
end
Run Code Online (Sandbox Code Playgroud)
这可以改进或以另一种方式完成吗?
我有一张数据表
ID Name
1 John
2 Robert
3 John
4 Sam
5 Jack
6 Sam
Now i want ony the the duplicate names ony through query
ie..,
Name
John
Sam
Run Code Online (Sandbox Code Playgroud) 我想知道怎么做不.在其他表中使用getdate()和现有日期的天数,其中该表包含多个记录,即我想知道5天前或10天后或15天后发布的作业.我写过这样的查询
declare @q1 datetime;
select cdate from jobposting where cdate like (select cdate)
select datediff ( dd, q1, getdate())
Run Code Online (Sandbox Code Playgroud)
其中q1必须存储jobposting表中的所有日期,但我无法得到正确的答案.
或者我也尝试过
select datediff ( dd, select cdate from jobposting, getdate())
Run Code Online (Sandbox Code Playgroud)
在提前感谢你.
嗨,我是SQL的新手,我正在试图弄清楚我将如何与大多数朋友(userId)获得前5名"乐队",这就是我所拥有的; 使用userId作为PK的usertbl然后是带有bandId作为PK的bandsTbl然后我有一个带有FK userId和bandId的表bandfriends.
bandfriends
userid | bandId
---------------
1 | 1
1 | 2
1 | 3
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在使用来自外部源的表,并且无法"清理".有一个列nvarchar(20)并且在95%的时间内包含整数,但偶尔包含alpha.我想用类似的东西
select * from sch.tbl order by cast(shouldBeANumber as integer)
Run Code Online (Sandbox Code Playgroud)
但这会在奇数"3A"或"D"或"SUPERCEDED"值上引发错误.
有没有办法说"如果可以的话,将其排序为数字,否则只按字符串排序"?我知道那句话中有些邋,,但这基本上就是我想要的.
让我们说例如价值观
7,1,5A,SUPERCEDED,2,5,SECTION
Run Code Online (Sandbox Code Playgroud)
如果按以下任何一种方式对它们进行排序,我会很高兴(因为我真的只需要使用数字方法)
1,2,5,7,5A,SECTION,SUPERCEDED
1,2,5,5A,7,SECTION,SUPERCEDED
SECTION,SUPERCEDED,1,2,5,5A,7
5A,SECTION,SUPERCEDED,1,2,5,7
Run Code Online (Sandbox Code Playgroud) SQL 2005中的存储过程 - 字段类型为NText
我编写一个存储过程来整理一些数据,然后再将其导入Microsoft CRM.到目前为止一切正常.
但是我需要在nText字段上做一个case语句.它需要针对大约3或4个文本值检查此字段并设置新字段(已在目标表中),该字段也是nText字段.
但是我收到错误"数据类型ntext和varchar在等于运算符不兼容.
我遇到过一些文章,但他们的解决方案看起来都非常复杂.
感谢您的高级帮助和建议.
在Sql Server 2005中,映射到活动目录组的数据库用户帐户与包含与成员相同的活动目录组的数据库角色之间有什么区别?
我有两张桌子:
我希望将每个剧集的表1的代码复制到表2.目前执行此操作的代码如下:
UPDATE Table2
SET Table2.Code = (SELECT TOP 1 Code FROM Table1 WHERE Episode = Table2.Episode)
Run Code Online (Sandbox Code Playgroud)
这需要数小时和数小时.(我不确切知道多少小时,因为我在大约20小时的时候取消了它.)他们是大桌子,但肯定有更快的方法吗?
sql-server-2005 ×10
sql ×5
sql-server ×5
t-sql ×3
c# ×1
date ×1
optimization ×1
performance ×1
security ×1
sorting ×1