zoukankan      html  css  js  c++  java
  • MySQL 表子查询

    MySQL 表子查询

    表子查询是指子查询返回的结果集是 N 行 N 列的一个表数据。

    MySQL 表子查询实例

    下面是用于例子的两张原始数据表:

    article 表:
    aidtitlecontentuid
    1 文章1 文章1正文内容... 1
    2 文章2 文章2正文内容... 1
    3 文章3 文章3正文内容... 2
    4 文章4 文章4正文内容... 3
    blog 表:
    bidtitlecontentuid
    1 日志1 日志1正文内容... 1
    2 文章2 文章2正文内容... 1
    3 文章3 文章3正文内容... 2

    SQL 如下:

    SELECT * FROM article WHERE (title,content,uid) IN (SELECT title,content,uid FROM blog)
    

    查询返回结果如下所示:

    aidtitlecontentuid
    2 文章2 文章2正文内容... 1
    3 文章3 文章3正文内容... 2

    对比前面行子查询的例子,将行子查询中的 WHERE bid=2 条件限制去掉之后,其返回的数据就是一个表记录(当然如果符合条件的记录只有一条,而成为行子查询记录,但我们认为这是一个表子查询)。

    该 SQL 的意义在于查找 article 表中指定的字段同时也存在于 blog 表中的所有的行(注意 = 比较操作符换成了 IN),实际上等同于下面的条件语句:

    SELECT * FROM article,blog 
    WHERE (article.title=blog.title AND article.content=blog.content AND article.uid=blog.uid)
    

    实际上,后面的语句是经过 MySQL 优化的而效率更高,或者也可以使用 MySQL JOIN 表连接来实现。在此使用该例子只是为了便于描述表子查询的用法。

    衍生数据表子查询

    表子查询应用得更多情况是衍生数据表子查询,即首先执行子查询生成临时表,外层主查询再到此临时表中获取数据。具体参见《MySQL FROM 子查询》。

  • 相关阅读:
    shell脚本根据端口号kill掉进程
    使用netstat -ano 查看机器端口的占用情况(windows环境)
    分享一两个小工具,
    将压缩文件伪装图片格式文件以及将python文件转化为exe文件(测试完,真的有效)
    celery 异步任务 周期任务 定时任务的实现
    wsgi、uwsgi、asgi协议的关系
    centos7忘记密码更改步骤
    工作遇到的坑以及自己的学习悟道之道
    案例小集锦
    asp.net mvc部署
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/6322230.html
Copyright © 2011-2022 走看看