MySQL入门 (九) : 子查询 Subquery

1 一个叙述中的查询叙述

子查询(subquery)是一种很常见的应用,不论是查询、新增、修改或删除都有可能出现。 子查询是一个放在左右刮号中的「SELECT」叙述,而这个查询叙述会放在另一个SQL叙述中。 在执行一些工作的时候,使用子查询可以简化SQL叙述。 以查询「人口比美国多的国家」来说,你要先执行下列查询美国人口数量的叙述:

mysql_10_snap_01

知道美国人口数量以后,再执行下列的叙述就可以传回人口比美国多的国家了:

mysql_10_snap_02

以这样的查询来说,你要执行两次查询叙述来完成这个工作。 不过遇到类似这样的需求时:

mysql_10_snap_03

你就可以考虑把它们写成一个叙述就可以了:

mysql_10_snap_04

上列的范例是一种很常见的子查询应用,使用子查询的好处是不用执行多次查询就可以完成工作,这样可以简化查询的工作;对于处理资料的应用程式来说,也可以节省一些程式码。

 

 

2 WHERE、HAVING子句与子查询

子查询大部份使用在提供判断条件用的资料,在「WHERE」和「HAVING」子句中,都可能出现子查询:

mysql_10_snap_05

 

 

点击阅读全文

 

更多参考:

MySQL 超新手入门教程系列

MySQL入门 (一) : 资料库概论与MySQL的安装

MySQL入门 (二) : SELECT 基础查询

MySQL入门 (三) : 运算式与函式

MySQL入门 (四) : JOIN 与UNION 查询

MySQL入门 (五) : CRUD 与资料维护

MySQL入门 (六) : 字元集与资料库

MySQL入门 (七) : 储存引擎与资料型态

MySQL入门 (八) : 表格与索引

MySQL入门 (十) : Views

 

 

本文转自: MySQL入门 (九) : 子查询 Subquery

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你的子查询返回多于一行的结果时,会出现"Subquery returns more than 1 row"的错误。这个错误说明你的子查询的筛选条件导致了多行结果。解决这个问题的方法是检查子查询的筛选条件,确保它只返回一行结果。你可以单独执行子查询,并排查错误所在。你可以尝试使用GROUP BY和HAVING子句来限制子查询的结果行数,以确保只返回一行结果。例如,你可以使用类似以下的查询语句来解决这个问题: EXPLAIN select * from mytable where shouji = (select shouji from mytable GROUP BY shouji HAVING count(shouji)>2) 这样的查询会返回一个错误信息,其中会指出具体的错误行数和错误类型。你可以根据这些信息对子查询进行调试,并修复筛选条件,确保只返回一行结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [mysql报错:子查询返回值大于一](https://blog.csdn.net/azure10492/article/details/126031336)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [关于mysql错误:Subquery returns more than 1 row](https://blog.csdn.net/zuihongyan518/article/details/82967902)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值