为什么mysql中的速记命令不能实现

为什么mysql中的速记命令不能实现,mysql,Mysql,让我们进行以下查询: SHOW FULL processlist 我认为这是一个大致的缩写: SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST 但是,为什么第一个表单在运行查询时不允许任何具体化,例如执行以下操作: CREATE VIEWS x AS (show full processlist); 或: 它是SQL标准语言规范的一部分,用于创建视图。。。像然后选择。。。从…起仅允许依赖查询是查询表达式,即SELECT语句 ShowProcessL

让我们进行以下查询:

SHOW FULL processlist
我认为这是一个大致的缩写:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST 
但是,为什么第一个表单在运行查询时不允许任何具体化,例如执行以下操作:

CREATE VIEWS x AS (show full processlist);
或:


它是SQL标准语言规范的一部分,用于创建视图。。。像然后选择。。。从…起仅允许依赖查询是查询表达式,即SELECT语句


ShowProcessList不是标准SQL的一部分,它是实现数据库管理功能的特定于MySQL的语句。对于SQL标准来说,没有义务使任何SHOW命令符合SQL语义。因此,任何SHOW语句都不一定支持与其他SQL子句(如JOIN或WHERE或GROUP BY)一起使用。还有一些孤立的情况,如SHOW TABLES WHERE。。。但是这些并没有得到一致的支持。

不确定除了mysql是这样设计的以外,你还希望得到什么答案?@Shadow确定,还有其他方法吗?或者它只是一个终端,并且以任何方式都不可组合?您知道其他数据库是否支持这种功能吗?如果您想在查询中使用完整的进程列表,请使用INFORMATION_SCHEMA.PROCESSLIST,因为它的行为实际上类似于表。虽然show full processlist与此表共享mysql中的一些底层机制,但它不是SQL级别的,也不是别名或等效语法的下拉列表。@David542您确实应该决定您的问题是关于什么的,因为您在问题中问了一件事,然后在随后的注释中问了两件不同的事!解决方法是使用信息模式,但您已经意识到了这一点。实用程序语句和结构基本上是特定于产品的,因此在数据库产品之间不可移植。
SELECT * FROM (show full processlist) x ORDER BY ...