双11后第一波买家秀:求救SQL2000问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/08 14:21:28
求救SQL问题
我用了两条语句:
1.delete from cars1 where 时间< DATEADD(day,-3,getdate())
2.select * from cars1 where 时间< DATEADD(day,-3,getdate())

为什么我都是用where 时间 <DATEADD(day,-3,getdate())当条件,但是结果相反呢?
DELETE删除的是大于的时间(相反了)
SELECT可正常。为什么呢?

使用SQL2000 SERVER
TO:captain2005
我这两条是分开执行的,但是所操作的记录集相反了,比如我有三条记录,如果有两条满足了第一条语句那第三条记录就满足第二条语句了.

问题解决了,我把SQL的脚本文件发上来大家看看。
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DELCars1]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[DELCars1]
GO

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE DELCars1
AS
DECLARE @Row1 smallint
BEGIN TRANSACTION
INSERT INTO CarsSer Select * from cars1 where datediff(day,时间,getdate())>=3
SET @Row1=@@rowcount
IF @@ERROR<>0
BEGIN
ROLLBACK TRANSACTION
RETURN 1
END
Delete from cars1 where datediff(day,时间,getdate())>=3
IF @@ERROR<>0 OR @@rowcount<>@Row1
BEGIN
ROLLBACK TRANSACTION
RETURN 1
END
COMMIT TRANSACTION
RETURN 0
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

这个肯定相反阿,第一条是删除了满足条件的结果,第二句是选择满足同样条件的结果,肯定是互补的了,我感觉第一条是不是有点问题

从你给的描述中可以肯定没有错,极有可能是程序其它部分错了