• MySQL 标量子查询


    MySQL 标量子查询

    标量子查询是指子查询返回的是单一值的标量,如一个数字或一个字符串,也是子查询中最简单的返回形式。

    一个标量子查询的例子如下:

    SELECT * FROM article WHERE uid = (SELECT uid FROM user WHERE status=1 ORDER BY uid DESC LIMIT 1)
    

    在该例子中,子查询语句:

    SELECT uid FROM user WHERE status = 1 ORDER BY uid DESC LIMIT 1
    

    返回的是单一的数字(如 2),实际的查询语句为:

    SELECT * FROM article WHERE uid = 2
    

    使用子查询进行比较

    可以使用 = > < >= <= <> 这些操作符对子查询的标量结果进行比较,通常子查询的位置在比较式的右侧:

    SELECT * FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2)
    

    提示

    对于采用这些操作符之一进行的比较,子查询必须返回一个标量。唯一的例外是 = 可以和行子查询同时使用。

    子查询与表连接

    在很多情况下,子查询的效果与 JOIN 表连接很类似,但一些特殊情况下,是必须用子查询而不能用表连接的,如:

    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)
    

    该例子要找出用户发表了 2 篇文章的所有文章记录。对应的两个数据表如下:

    article 文章表:
    aidtitlecontentuid
    1 文章1 文章1正文内容... 1
    2 文章2 文章2正文内容... 1
    3 文章3 文章3正文内容... 2
    4 文章4 文章4正文内容... 3
    user 用户表:
    uidusernamepasswordstatus
    1 admin b7e591c246d010bb2ccd77d52490c85e 1
    2 小明 a193686a53e4de85ee3f2ff0576adf01 1
    3 Jack 0193686a35e4de85ee3f2ff0567adf490 0

    查询返回结果如下所示:

    aidtitlecontentuid
    1 文章1 文章1正文内容... 1
    2 文章2 文章2正文内容... 1
  • 相关阅读:
    javascript:history.go()和history.back()的区别
    ASP.NET26个性能优化方法
    20 个 jQuery 分页插件和教程,附带实例
    JQuery中$.ajax()方法参数详解
    记住键盘快捷键大全 提高电脑操作速度
    URL重写案例
    url重写(伪静态)IIS配置图解
    URL重写的优缺点分析
    C# GUID的使用
    js中的编码与解码
  • 原文地址:https://www.cnblogs.com/txd66/p/3269390.html
Copyright © 2020-2023  润新知