Home >Backend Development >PHP Tutorial >where子查询懵了,

where子查询懵了,

WBOY
WBOYOriginal
2016-06-23 14:14:26960browse

本帖最后由 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多个),再选用合适的运算符

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

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

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

是这样的,感谢!

子查询的结果可以作为另一个查询的条件,当你查询的结果只有一条时可以用 = 

对的,select max(goods_id) from goods) 返回的是记录集
而 goods_id=(select max(goods_id) from goods)
中的 goods_id 也是记录集(因为每行都有一个)

当然就可以比较了

好 我也会写这种查询了。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn