今晚写数据库应用程序的时候发现,我的sql2000竟然出问题了
(程序写到了数据库记录的删除部分,难道是错误操作导致数据库崩溃?可是出问题后,删除记录这部分功能还是很正常啊)原来运行一直很正常的程序突然在运行期间出了问题,检查了一下,发现是sql语句执行 runtime error
嵌套查询,提示 “子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。”可是之前运行一直良好,后来拿同样的sql语句和程序到别的机子试了试,都运行证常why ? sql 2000 崩溃了??? whan can i do ?
(程序写到了数据库记录的删除部分,难道是错误操作导致数据库崩溃?可是出问题后,删除记录这部分功能还是很正常啊)原来运行一直很正常的程序突然在运行期间出了问题,检查了一下,发现是sql语句执行 runtime error
嵌套查询,提示 “子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。”可是之前运行一直良好,后来拿同样的sql语句和程序到别的机子试了试,都运行证常why ? sql 2000 崩溃了??? whan can i do ?
可是, 1 是之前运行很正常,哪怕是30分钟前
2 是我拿到别的机子去用, 无论是同样的sql语句,还是同样的程序,都很正常
--生成部分测试数据
declare @t table(ID int,Code varchar(10))
insert into @t select 1,'AAAA'
insert into @t select 2,'BBBB'
insert into @t select 3,'CCCC'--以下SQL在当前状态下执行正确
select * from @t t where t.ID=(select ID from @t where Code='AAAA')--新增一条记录,该记录将导致上述查询语句子查询的返回数据从1条变成两条
insert into @t select 4,'AAAA'--再执行该查询语句,数据库提示出错
select * from @t t where t.ID=(select ID from @t where Code='AAAA')
select * from @t t where t.ID=(select ID from @t where Code='AAAA')--一个ID等于行个子查询结果
之前你的程序运行没问题是由于数据不多,没有子查询就一个结果,没暴露出问题
from 表
或select *
from 表
where id =(select customer_id ---)子查询在这两种情况下要保证查出来的数据是一个,而不是多个,多个即为数组集合
你以前的数据查出来是一个,而现在查出来是多个多个数据的集合怎么能和一个数值来进行相等操作呢。
把select 后面加个top 1 吧