为什么给定的语法在mysql中有效?

2023-12-27

In 另一个答案 https://stackoverflow.com/a/22750898/251311我发现了一个奇怪的语法:

(SELECT * FROM `articles` 
 WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY))
 ORDER BY `views` DESC 
 LIMIT 20
) ORDER by `views` ASC

不过mysql执行得很好。

为什么我认为它应该失败:

  1. 子查询没有别名
  2. 整个查询缺少SELECT clause

我发现它的运行出乎意料,并且没有解释它为什么有效。

它不符合定义的语法https://dev.mysql.com/doc/refman/5.5/en/select.html https://dev.mysql.com/doc/refman/5.5/en/select.html

那么,为什么它是有效的呢?有参考资料吗?


这是替代方案UNION带有结尾的语法ORDER BY.

这就是两个选择之间的联合的样子:

(SELECT ...)
UNION
(SELECT ...) ORDER BY ... LIMIT ...

这就是这样的联盟one选择看起来像:

(SELECT ...) ORDER BY ... LIMIT ...

与子查询完全无关。

MySQL 中没有记录这一点,但从语法 https://github.com/twitter/mysql/blob/master/sql/sql_yacc.yy#L7322:

top_level_select_init:
        SELECT_SYM
        {
            Lex->sql_command= SQLCOM_SELECT;
        }
        select_init2
        | '(' select_paren ')' union_opt
        ;


/* Need select_init2 for subselects. */
union_select_init:
        SELECT_SYM select_init2
        | '(' select_paren ')' union_opt
        ;

...

union_opt:
        /* Empty */ { $$= 0; }
        | union_list { $$= 1; }
        | union_order_or_limit { $$= 1; }
        ;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么给定的语法在mysql中有效? 的相关文章

  • 使用绑定变量动态传递表名和列名

    有没有办法使用绑定变量将列名和表名动态传递给查询 这可以通过使用简单的串联运算符来完成 但我想要一种不同的方法来实现这一目标 EDIT OPEN abc cur FOR Select column name from table name
  • 使用存储过程并发访问MySQL数据库

    我有一个存储过程 它将读取然后增加数据库中的值 许多程序同时使用这个特定的过程 我担心并发问题 特别是读写器问题 有人可以建议我任何可能的解决方案吗 thanks 首先 正如另一篇文章中所述 使用 InnoDB 从 MySQL 5 5 开始
  • 在 Entity-Framework Core 中批量插入到 MySQL [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个由约 10 000 个对象组成的列表 比方说类Person 我需要将其插入到 MySQL 表中
  • MySql 完全联接(联合)和多个日期列的排序

    一个相当复杂的 sql 查询 我可能使它变得更加困难 我有两张桌子 消息 newsid 日期时间 新闻文本 图片 图片ID 日期时间 imgPath 两者没有关系 我只是在新闻 图片创建的日期之前加入 到目前为止的 SQL SELECT F
  • 有没有办法将应用程序上下文与非 Sybase DB 服务器中的数据库连接进行通信(类似于 Sybase 中的 set_appcontext)?

    Sybase 有一种让应用程序进行通信的方法 上下文 数据 http manuals sybase com onlinebooks group as asg1250e sag Generic BookTextView 38861 hf 0
  • MySQL - 此版本的 MySQL 尚不支持“LIMIT 和 IN/ALL/ANY/SOME 子查询”

    这是php编码我正在使用的 Last Video db gt fetch all SELECT VID thumb FROM video WHERE VID IN SELECT VID FROM video WHERE title LIKE
  • 在 JSP 中迭代列表对象

    我正在做一个项目来尝试自学 spring 和 struts 我目前卡在 JSP 页面上 我有一个 pojo 类 其中包含带有 getter setter 的变量 eid 和 ename 我还有一个 sql 中的表 其具有相同的值和六个填充行
  • LINQ-to-SQL 是否支持组合查询?

    作为一名不懂 C 的程序员 我对 LINQ 查询的求值语义很好奇 如下所示 var people from p in Person where p age lt 18 select p var otherPeople from p in p
  • 使用存储过程访问数据可以提供哪些安全优势?

    我看到一些指南建议您通过存储过程对所有数据访问进行分层来保护数据库 我知道对于 SQL Server 您可以保护表甚至列免受 CRUD 操作的影响 例如 Logged in as sa USE AdventureWorks GRANT SE
  • 从 .frm 文件恢复 mysql 数据库

    我每周都会倾倒所有桌子以获得备份 但后来我明白它只是存储表的 frm文件 它不显示表的 MYD 和 MYI 文件 所以我只有我的数据库的 frm 文件 而且我的数据库是innodb 那么我可以用数据库中的数据获取我的数据库吗 是的 这是可能
  • 一次将多个值插入MySQL [重复]

    这个问题在这里已经有答案了 谁能解释一下为什么这个 PHP MySQL 不起作用 基本上我需要从表单中一次插入大量行 因此会有多个名称字段 多个短 中 长字段等 我收到此错误 Notice Undefined variable Short1
  • SQL COUNT(*) 返回错误答案

    以下脚本应返回部门名称以及这些部门中的员工人数 营销 行政和销售部门有 0 名员工 但返回值不是 0 而是 1 我怎样才能纠正它 select Department Departments DepartmentID count as Num
  • 使用 Hibernate Dialect 设置表字符集/排序规则?

    我使用 Hibernate MySQLInnoDB Dialect 来生成 DDL hibernate cfg xml
  • 我应该为 MySQL 使用什么 python 3 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 据我所知 MySQLdb 仍然没有移植到 Python 3 pypy 上似乎有另一个名为 PyMySQL
  • 获取 SQL 表上未使用的唯一值

    我有一个表 其中有一列描述数字 ID 该 ID 对于所有行都是唯一的 但它不是主键 数字 ID 是有限的 假设答案可以是从 1 到 10 SELECT ID FROM TABLE ID 1 2 5 我必须 通过 UI 向用户呈现未使用的值
  • SQL Server:比较两个表中的列

    我最近完成了从某些应用程序的旧版本到当前版本的迁移 在迁移数据库时遇到了一些问题 我需要一个可以帮助我比较两个表中的列的查询 我的意思不是行中的数据 我需要比较列本身来弄清楚我错过了表结构的哪些变化 看一下红门 SQL 比较 http ww
  • 对时间序列数据重新采样

    我有一个以毫秒为单位的时间序列列表 我想对时间序列进行重新采样并对组应用平均值 我如何在 Postgres 中实现它 重新采样 是指聚合一秒或一分钟内的所有时间戳 一秒或一分钟内的所有行形成一组 表结构 date x y z Use dat
  • 根据 SQL 查询的集合生成成员的“散点图”结果

    我有一个staff包含工作人员的数据库表 其中user no and user name列 我还有一个 department 包含员工可以加入的部门的表 其中dept no and dept name作为列 因为员工可以是多个部门的成员 所
  • 左连接 SQL 求和

    我有两张桌子想要加入 比如说表 a 和表 b 表 b 有许多行指向表 a 表 b 包含价格 实际上是一个购物篮 所以我想要的是表a中的所有记录和表b中的价格之和 我努力了 select a sum b ach sell from booki
  • 我的数据库有错误

    创建表时如下 create table Ticket ticket id integer not null primary key AirlineName varchar not null CustomerName varchar from

随机推荐

  • 结合案例进行选择

    请考虑 Subsets Flatten ParallelTable i j i 1 96 j 1 4 1 4 我需要选择所有子列表 以便 i 值在每个 4 子列表中永远不会相同 应接受 3 1 4 1 5 1 6 1 而 1 1 1 2 2
  • 如何使用 AJAX 将数据 POST 到 php 文件 [重复]

    这个问题在这里已经有答案了 我在将数据发送到 php 文件进行处理时遇到问题 我已经尝试了几乎所有方法 但找不到问题的根源 下面是一个 php 文件 它将产品名称 价格和 ID 发送到checkout用户点击后的功能buy button
  • 什么布局对象用于在 Android UI 中生成“气泡”弹出窗口? (不是吐司或对话框)

    我浏览了developer android com并用谷歌搜索了很多 但我似乎找不到执行此操作的布局对象 一个语音气泡之类的东西 其中有一个按钮列表 这可能是如果不是所有按钮都适合屏幕宽度 则可滚动 Twitter 应用程序 Handcen
  • 如何在 Swift 中检测日期变化

    我希望我的应用程序能够在另一天发生变化时采取行动 所以 在我的 appDelegate 中 我把 func applicationSignificantTimeChange application UIApplication this on
  • 修改 HTML 响应(不是标头)

    希望有人可以帮助我或为我指明正确的方向 我被要求找出如何让 Akamai 或任何其他 CDN 或 NGINX 修改实际的响应正文 Why 我要让 CDN 将所有 http 请求更改为 https 而不是修改应用程序代码以使用 进行外部资源请
  • types 与 @types NPM 范围

    在某些情况下typings用于处理 TypeScript 定义 例如角度 角度2种子 https github com angular angular2 seed 在其他情况下 范围为 NPM types包的使用没有typings涉及 例如
  • 角度测试 - 模拟 InjectionToken

    我正在尝试测试处理 SignalR 连接的 Angular 服务 该服务将 SignalR 的代码作为 InjectionToken 这是提供者文件 signalr provider ts import InjectionToken fro
  • android 打开对话活动而不打开其后面的主要活动

    我正在编写一个程序 在收到短信时提供快速回复对话框 然而 我得到了意想不到的结果 当我收到短信时 会出现适当的对话框活动 显示正确的电话号码和消息 但是它后面还有第二个活动 它是我的程序中的 默认 活动 它是我启动应用程序时打开的活动 我不
  • 回滚TFS中的单个文件

    如果我在源代码管理中查看单个文件的历史记录 我可以右键单击列表中的更改集 然后选择 回滚整个更改集 这会回滚我在该签入期间签入的所有其他文件还是仅回滚我当前正在查看的文件 如果它确实回滚所有文件 是否有办法仅回滚所选文件 Thanks 如前
  • 如何将外来编码字符写入文本文件

    我正在遍历文件夹并收集文档名称和一些其他数据以加载到数据库中 import os text file open Output txt w dirName D for nextDir subDir fileList in os walk di
  • 使用代码,如何更新气流变量?

    我需要以编程方式更新在 Airflow 中创建的变量 但我找不到如何使用代码执行此操作的答案 我已经用以下代码检索了我的变量 column number Variable get column number 在函数结束时 我想将column
  • Android中MediaStore中存储图像的问题

    我编写了一段代码 通过java程序将新图像插入到Android设备图像库中 请找到下面的代码 ContentValues values new ContentValues values put Images Media TITLE titl
  • 是 C# 6 吗? (猫王op)线程安全?如果是这样,怎么办?

    提前道歉 这个问题来自一位试图学习高级 C 的硬核 未经改革的 C 开发人员 考虑以下 if myUserDefinedObject null myUserDefinedObject ToString 这显然不是线程安全的 另一方面 我看过
  • 将 Haskell 中的命题逻辑扩展到模态逻辑

    我用 Haskell 编写了一些代码来建模命题逻辑 data Formula Prop propName String Neg Formula Conj Formula Formula Disj Formula Formula Impl F
  • 如何求这个数组的和?

    我想对所有 建议 字段进行求和 请问我该怎么做呢 我用的是PHP Array 0 gt Array Id gt 4 Suggested gt 1322 proximite r gt 30924 8470655462 1 gt Array I
  • 在 angularjs 中对表的行进行排序或重新排列(拖放)

    我想要具有重新排列表中行的功能 使用拖放对行进行排序 并且模型中行排列的索引也应该改变 我怎样才能做类似的事情 http jsfiddle net tzYbU 1162 http jsfiddle net tzYbU 1162 使用角度指令
  • 如何解决 找不到方法:System.Collections.Generic.IList`1

    目前我正在尝试在 macOS 上开发 C ASP NET MVC Web 应用程序 我在 NET 6 0 402 上运行 当我跑步时dotnet ef update database要更新我的数据库 我收到此错误 未找到方法 System
  • 更改绑定值,而不是绑定本身

    我有一个包含 DependencyProperty MyProperty 的 WPF UserControl DependencyProperty 绑定到 DataContext 中的属性 现在在 UserControl 中我想更改绑定属性
  • Google Directions API 查询限制

    The url http code google com intl lv apis maps documentation directions http code google com intl lv apis maps documenta
  • 为什么给定的语法在mysql中有效?

    In 另一个答案 https stackoverflow com a 22750898 251311我发现了一个奇怪的语法 SELECT FROM articles WHERE date gt UNIX TIMESTAMP DATE NOW