日期:2014-05-17  浏览次数:20474 次

where子查询懵了,
本帖最后由 u010572351 于 2013-06-28 17:14:25 编辑


 select goods_id,cat_id, goods_name from goods where goods_id=
 (select max(goods_id) from goods);

语句没有问题问题,返回正确结果!但是:

意思大概是:查询商品表中最后添加的商品信息(goods_id最大),
想法我懂,但是where条件后面的条件值是一个select语句,他虽然返回了一个最大值,但是他是一个select语句啊,应该是一个结果集,不是一个int啊,怎么能和goods_id做比较?懵了。



------解决方案--------------------
如果是结果集内是单个结果 是可以用=符号的
如果是多个结果,往往用in.   一般来说看自己需求来写,这样基本上能判定子查询结果是什么(单个or多个),再选用合适的运算符

总之就是这种是可以的,因为结果集只有一个结果

------解决方案--------------------
子查询的结果可以作为另一个查询的条件,当你查询的结果只有一条时可以用 = 
------解决方案--------------------
对的,select max(goods_id) from goods) 返回的是记录集
而 goods_id=(select max(goods_id) from goods)
中的 goods_id 也是记录集(因为每行都有一个)

当然就可以比较了