千与千与千 2020-06-17 22:22 采纳率: 50%
浏览 628
已采纳

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 |
+--------------+--------------+------------+

就很懵,因为是初学,所以不明白是什么原因,还是希望有人帮忙指点一下

  • 写回答

4条回答 默认 最新

  • 愤世嫉俗的胖子 2020-06-18 08:53
    关注

    第一个查询里面,没有表别名,子查询中两个字段都取自子查询的 product 表;
    第二个查询,有表别名,子查询中的 where 子句是比较的内外两个表。
    看你的需要,应该是要第二个。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵