一、引出from型子查询
1.1、表 or 结果?
如果不看查询语句的话,单看“结果”,是分不清这个“结果”是表还是查询语句的结果的,比如下图
![](https://img.haomeiwen.com/i5945886/100aca2d7839d8ab.png)
你没法分辨discount是表中固有的字段,还是前面两个字段运算的结果(查询语句的结果)。
因此,可以把查询的结果集看成一张表,因此可以对结果集,再次进行查询。
1.2、from型子查询
即,内层SQL的查询结果,当成一张临时表,供外层SQL,再次查询。
应用场景
查询每个栏目下,goods_id最大的商品。
假设有一张表,如下:
![](https://img.haomeiwen.com/i5945886/d96fe8ecc4ec46e1.png)
满足,每个栏目下的第一个good_id正好是最大的那个id。那么对于这个表,我们只需要再用group一次,即可得到表中每个栏目的第一个商品,那么就是我们想要的结果了。(这个group查询可能在新版本中的MySQL中认为语法错误,这里只是举个例子。)
![](https://img.haomeiwen.com/i5945886/4bc6a278d55b2362.png)
那么怎么得到上面的特别方便的表格temp呢?可以用查询语句,得到该temp表。然后from 后面加temp表即可呀。
如下:
![](https://img.haomeiwen.com/i5945886/98b2538811ebfcc4.png)
上面查询语句,内层sql查询语句得到temp表,然后外层再次查询一次即可。
网友评论