使用内联数据模拟MySQL记录

时间:2013-11-25 12:45:57

标签: mysql sql

这可能听起来像一个奇怪的问题,但我很想知道它是否可能......

有没有办法使用内联数据模拟MySQL记录?例如,如果有可能,我希望它能像以下那样工作:

SELECT inlinedata.*
FROM (
  ('Emily' AS name, 26 AS age),
  ('Paul' AS name, 56 AS age)
) AS inlinedata
ORDER BY age

2 个答案:

答案 0 :(得分:11)

不幸的是,MySQL不支持标准的values行构造函数,所以你需要使用" dummy"选择每一行并使用UNION ALL

组合行
SELECT *
FROM (
  select 'Emily' AS name, 26 AS age 
  union all 
  select 'Paul', 56
) AS inlinedata
ORDER BY age

UNION ALL有两个目的

  1. 它保留了您可能具有的任何重复
  2. 它比普通UNION快一点(因为它没有检查重复)

答案 1 :(得分:0)

不,不是没有让它变得复杂,但你可以创建一个临时表并进行查询。当前客户端会话终止时,将删除临时表。

您可以查询它们并将数据插入其中,就像使用其他表一样。创建它们时,必须使用TEMPORARY关键字,如下所示:

CREATE TEMPORARY TABLE ...

这样,您还可以根据需要重复使用多个查询的数据,不存储任何数据,并且您查询的所有记录都具有正确的结构(而您在示例中提供的语法会在拼写列时产生问题名字错了)......