ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL的SQL语句 - 数据操作语句(13)- 子查询(3)

2020-12-04 14:03:05  阅读:297  来源: 互联网

标签:语句 13 column1 t1 subquery MySQL 查询 WHERE SELECT


使用子查询进行比较

子查询最常用的形式是:

1. non_subquery_operand comparison_operator (subquery)

其中 comparison_operator 是以下运算符之一:

1. =  >  <  >=  <=  <>  !=  <=>

例如:

1. ... WHERE 'a' = (SELECT column1 FROM t1)

MySQL 也允许这种结构:

1. non_subquery_operand LIKE (subquery)

曾经子查询的唯一合法位置是在比较符的右侧,可能有一些老的 DBMS 仍然在坚持这一点。

下面是一个子查询比较的常见形式,使用联接无法做到这一点。它查找表 t1 中 column1 值等于表 t2 中最大值的所有行:

1. SELECT * FROM t1
2.   WHERE column1 = (SELECT MAX(column2) FROM t2);

这是另一个例子,对于使用联接来说这又是不可能的,因为它涉及到对其中一个表的聚合。它查找表 t1 中包含在给定列中出现两次的值的所有行:

1. SELECT * FROM t1 AS t
2.   WHERE 2 = (SELECT COUNT(*) FROM t1 WHERE t1.id = t.id);

要将子查询与标量进行比较,子查询必须返回标量。要将子查询与行构造函数进行比较,子查询必须是返回值数量与行构造函数相同的行子查询。

官方网址:
https://dev.mysql.com/doc/refman/8.0/en/comparisons-using-subqueries.html

标签:语句,13,column1,t1,subquery,MySQL,查询,WHERE,SELECT
来源: https://blog.51cto.com/15023289/2559618

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有