MySQL中列子查询与行子查询操作的学习教程
MySQL 列子查询及 IN、ANY、SOME 和 ALL 操作符的使用 SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1) 列子查询中使用 IN、ANY、SOME 和 ALL 操作符 由于列子查询返回的结果集是 N 行一列,因此不能直接使用 = > < >= <= <> 这些比较标量结果的操作符。在列子查询中可以使用 IN、ANY、SOME 和 ALL 操作符:
下面是原始数据表: table1: s1 2 10 table2: s2 5 12 20 ANY 操作符 s1 10 在子查询中,返回的是 table2 的所有 s2 列结果(5,12,20),然后将 table1 中的 s1 的值与之进行比较,只要大于 s2 的任何值即表示为 TRUE,符合查询条件。 SELECT s1 FROM table1 WHERE s1 > (SELECT s2 FROM table2) SELECT s1 FROM table1 WHERE s1 > ALL (SELECT MAX(s1) FROM table2) MySQL 行子查询 SELECT * FROM table1 WHERE (1,2) = (SELECT column1,column2 FROM table2) 在该例子中,在保证子查询返回单一行数据的前提下,如果 column1=1 且 column2=2 ,则该查询结果为 TRUE。 blog 表: SQL 如下: SELECT * FROM article WHERE (title,content,uid) = (SELECT title,uid FROM blog WHERE bid=2) 查询返回结果如下所示: 在该行子查询例子中,将 article 表 title,uid 字段逐一与子查询返回的行记录作比较,如果相等则列出这些相等的记录(理论上可能不止一条)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server – SQL Server 2008还原数据库允许在不存在时进
- sql-server-2008 – T-SQL删除所有非alpha和非数字字符
- sql-server – VS2013数据库项目如何在解决方案中引用其他数
- 解决sqlserver 2000 [系统找不到指定的路径]
- 得到SQLSERVER 2005 数据库的当前数据库中的数据文件所在磁
- SQLSERVER 2014 SP1 的服务器 日志文件无法收缩的处理
- sqlserver 一张表两列都的值都相同处理
- 数据库 三范式最简单最易记的解释
- sql – 如何从多个表中删除数据?
- Sql Server 2012 分页方法分析(offset and fetch)