使用内联数据模拟MySQL记录
这听起来可能是个奇怪的问题,但我很想知道这是否可能 有没有一种方法可以使用内联数据模拟MySQL记录?例如,如果可能的话,我希望它能像这样工作:使用内联数据模拟MySQL记录,mysql,sql,Mysql,Sql,这听起来可能是个奇怪的问题,但我很想知道这是否可能 有没有一种方法可以使用内联数据模拟MySQL记录?例如,如果可能的话,我希望它能像这样工作: SELECT inlinedata.* FROM ( ('Emily' AS name, 26 AS age), ('Paul' AS name, 56 AS age) ) AS inlinedata ORDER BY age 不幸的是,MySQL不支持这种类型的标准值行构造函数,因此需要为每一行使用一个“虚拟”选择,并使用UNION ALL
SELECT inlinedata.*
FROM (
('Emily' AS name, 26 AS age),
('Paul' AS name, 56 AS age)
) AS inlinedata
ORDER BY age
不幸的是,MySQL不支持这种类型的标准
值
行构造函数,因此需要为每一行使用一个“虚拟”选择,并使用UNION ALL
SELECT *
FROM (
select 'Emily' AS name, 26 AS age
union all
select 'Paul', 56
) AS inlinedata
ORDER BY age
UNION ALL
有两个用途
UNION
快一点点(因为它不检查重复项)不,这会使它变得复杂,但您可以创建一个临时表,并查询它。当前客户端会话终止时,将删除临时表 您可以像查询其他表一样查询它们并向其中插入数据。创建它们时,必须使用临时关键字,如下所示:
CREATE TEMPORARY TABLE ...
这样,如果需要,您还可以在多个查询中重用数据,不存储任何数据,并且您查询的所有记录都具有正确的结构(而您在示例中给出的语法在拼写列名错误时会产生问题)…a好的,您可以创建临时表并从中选择您实际上不需要包装器的表。@草莓:在这个简化的示例中,您不需要包装器,这是正确的。但我认为这样做更清楚(当然这是个人偏好)——如果你开始加入这个派生表,你确实需要它。你能展示一下第三行是如何工作的吗?我正在努力,但失败了。这将有助于回答更多的情况。