子查询返回的值多于一个(突然间就解决了~)
子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。 SELECT top 6 [B_a_BookName] FROM [BookMessage_b] where B_a_BookName=(select DISTINCT B_a_BookName from BookMessage_a where B_a_Basic=(select C_id from Category where C_Category_b='计算机') ) ORDER BY [B_b_Before] DESC
换成中文一下
SELECT top 6 [B_a_BookName] FROM 表1 where B_a_BookName=(select DISTINCT B_a_BookName from 表二 where B_a_Basic=(select C_id from 表三 where C_Category_b='计算机') ) ORDER BY [B_b_Before] DESC
大概的意思:
(select C_id from 表三 where C_Category_b='计算机') 这个是放类别的表,凡是有计算机这个类别的都满足 ,也就是不止一个id
(select DISTINCT B_a_BookName from 表二 where B_a_Basic= 这个是说当书籍表中有属于计算机的书籍的时候输出
SELECT top 6 [B_a_BookName] FROM 表1 where B_a_BookName=() 这个就是输出有计算机的表的ORDER BY [B_b_Before]......
语句应该没问题~但是,子查询为什么不能多于一个?
PS:原来IN 是关键~
[此贴子已经被作者于2006-12-28 13:03:39编辑过]