51Testing软件测试论坛

标题: SQL数据库,在进行关联子查询时,使用别名与不使用别名的查询结果不同。 [打印本页]

作者: 测试积点老人    时间: 2020-9-9 13:11
标题: SQL数据库,在进行关联子查询时,使用别名与不使用别名的查询结果不同。
整张表数据:
+------------+--------------+--------------+------------+
| product_id | product_name | product_type | sale_price |
+------------+--------------+--------------+------------+
| 0001       | T恤衫        | 衣服         |       1000 |
| 0002       | 打孔器       | 办公用品     |        500 |
| 0003       | 运动T恤      | 衣服         |       4000 |  
| 0004       | 菜刀         | 厨房用具     |       3000 |
| 0005       | 高压锅       | 厨房用具     |       6800 |
| 0006       | 叉子         | 厨房用具     |        500 |
| 0007       | 擦菜板       | 厨房用具     |        880 |
| 0008       | 圆珠笔       | 办公用品     |        100 | |
+------------+--------------+--------------+------------+
不使用别名进行查询时:
select product_type, product_name, sale_price
from product
where sale_price > (select avg(sale_price)
from product
where product_type = product_type);
查询结果:
+--------------+--------------+------------+
| product_type | product_name | sale_price |
+--------------+--------------+------------+
| 衣服         | 运动T恤      |       4000 |
| 厨房用具     | 菜刀         |       3000 |
| 厨房用具     | 高压锅       |       6800 |
+--------------+--------------+------------+
使用别名进行查询:
SELECT product_type, product_name, sale_price
FROM Product AS P1
WHERE sale_price > (SELECT AVG(sale_price)
FROM Product AS P2
WHERE P1.product_type = P2.product_type);
查询结果:
+--------------+--------------+------------+
| product_type | product_name | sale_price |
+--------------+--------------+------------+
| 办公用品     | 打孔器       |        500 |
| 衣服         | 运动T恤      |       4000 |
| 厨房用具     | 菜刀         |       3000 |
| 厨房用具     | 高压锅       |       6800 |
+--------------+--------------+------------+
就很懵,因为是初学,所以不明白是什么原因,还是希望有人帮忙指点一下


作者: csliangcuiping    时间: 2020-9-15 10:13
第一个是一个表查询,所以查询出来的是在一个表内满足条件的数据,第二个是两个表进行比较,查询出来的是两个表比较后满足条件的数据。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2