Php-mysql中的子查询(V客学院知识分享)
来源:互联网 发布:西方伦理思想史淘宝 编辑:程序博客网 时间:2024/05/21 06:43
第一:子查询的定义
概念: 子查询允许把一个查询嵌套在另一个查询当中。
第二:子查询的分类
A.标量子查询:
是指子查询返回的是单一值的标量,如一个数字或一个字符串,也是子查询中最简单的返回形式。可以使用 = > < >= <= <> 这些操作符对子
查询的标量结果进行比较,通常子查询的位置在比较式的右侧
示例:
SELECT * FROM article WHERE uid = (SELECT uid FROM user WHERE status=1 ORDER BY uid DESC LIMIT 1)
SELECT * FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2)
SELECT * FROM article AS t WHERE 2 = (SELECT COUNT(*) FROM article WHERE article.uid = t.uid)
B.列子查询
指子查询返回的结果集是 N行一列,该结果通常来自对表的某个字段查询返回。
可以使用 = > < >= <= <>这些操作符对子查询的标量结果进行比较,通常子查询的位置在比较式的右侧
可以使用 IN、ANY、SOME和 ALL操作符,不能直接使用 = > < >= <= <>这些比较标量结果的操作符。
示例:
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1)
SELECT s1 FROM table1 WHERE s1 > ANY (SELECT s2 FROM table2)
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT s2 FROM table2)
NOT IN是 <> ALL 的别名,二者相同。
特殊情况
如果 table2为空表,则 ALL 后的结果为 TRUE;
如果子查询返回如 (0,NULL,1)这种尽管 s1 比返回结果都大,但有空行的结果,则 ALL后的结果为 UNKNOWN。
注意:对于 table2空表的情况,下面的语句均返回 NULL:
SELECT s1 FROM table1 WHERE s1 > (SELECT s2 FROM table2)
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT MAX(s1) FROM table2)
C.行子查询
指子查询返回的结果集是一行 N列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集。
例子:
SELECT * FROM table1 WHERE (1,2) = (SELECT column1, column2 FROM table2)
SELECT * FROM product WHERE(BigClass_ID,SmallClass_ID)=(SELECT BigClass_ID,SmallClass_ID from smallclass WHERE SmallClass_ID=356);
注:(1,2)等同于 row(1,2)
SELECT * FROM article WHERE (title,content,uid) = (SELECT title,content,uid FROM blog WHERE bid=2)
D.表子查询
指子查询返回的结果集是 N行 N 列的一个表数据。
例子:
SELECT * FROM article WHERE (title,content,uid) IN (SELECT title,content,uid FROM blog)
SELECT * FROM product WHERE (BigClass_ID,SmallClass_ID) IN(SELECT BigClass_ID,SmallClass_ID from smallclass);
第三:子查询的总结
子查询对数据的查找带来很多方便,从上面的分类种类一层一层往下了解。(PHP开发、web前端、UI设计、VR开发专业培训机构-v客IT学院版权所有,转载请注明出处,谢谢合作!)
- Php-mysql中的子查询(V客学院知识分享)
- Php-mysql的触发器(V客学院知识分享)
- Php-mysql的触发器之实例篇(V客学院知识分享)
- php socket编程 V客学院知识分享
- PHP curl 之操作实例(V客学院知识分享)
- php-DOM部分基础知识总结与实例(V客学院知识分享)
- 初试Vuforia开发AR(V客学院知识分享)
- VR资讯——局势明朗下的前景展望(V客学院知识分享)
- Unity 地形编辑器详解(V客学院技术分享)
- mysql中的子查询
- MySQL中的子查询
- MySql中的子查询
- Unity使用Cardboard、MojingSDK等VR插件的3DUI(UGUI)凝视效果的实现(V客学院知识分享)
- MySQL的子查询和连接知识
- mysql子查询中的陷阱
- 走过最长的路是你的套路(PS调色-V客学院技术分享)
- VR开发——Unity动画系统(V客it学院技术分享)
- VR开发——Unity动画系统2(V客it学院技术分享)
- 1.Android注解-编译时生成代码 APT(Annotation Processing Tool ) Poet 说明
- CSS 变量教程
- GitHub 的 试用说明
- JNI WARNING: NewStringUTF input is not valid Modified UTF-8: illegal start byte 0xb0
- C#调用非托管DLL(数据类型)
- Php-mysql中的子查询(V客学院知识分享)
- 解决No Hibernate Session bound to thread, and configuration does not allow creation of non-transaction
- 我们的社交不始于腾讯
- JDBC为什么要使用PreparedStatement而不是Statemen
- Ubuntu16.04下面的vs code出现Unable to activate CppCheck analyzer
- MYSQL-对varchar类型字段(都是数字)按照整数大小倒序排列
- Wireshark和Fiddler分析Android中的TLS协议包数据(附带案例样本)
- 如何应用BIM技术加快项目进度?
- Https 与 iOS 信息安全