子查询返回的值不止一个,怎么改正?

来源:百度知道 编辑:UC知道 时间:2024/06/19 01:04:34
在触发器中给变量赋值:deleted为逻辑表
Set @AcademeID =(Select ID From deleted)
Set @ClassID = (Select ID From Class Where AcademeID=@AcademeID)

问题:当Class表中AcademeID=@AcademeID记录不止一个时,@ClassID得到的值就不止一个,这是就会出错!
例如:Class表中有这样的两条记录
ID AcademeID
10 2
11 2
此时查询出来的ID的值有两个为10和11,执行Delete From Student Where ClassID=@ClassID就会出错,该怎么解决呢?

使用while循环解决即可!

Set @AcademeID int
while @@ROWCOUNT=1
BEGIN
--查询出第一条
Select TOP 1 @AcademeID=ID From deleted order by ID desc

.....要执行的语句

--查询出比上一条
Select TOP 1 @AcademeID=ID From deleted order by ID desc
where @AcademeID>ID

END

Set @AcademeID =(Select ID From deleted)
在deleted 后边加上where条件限制应该就可以了吧
让他一次只能有一个值