首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用select语句模拟表

用select语句模拟表
EN

Stack Overflow用户
提问于 2019-01-07 16:01:21
回答 2查看 917关注 0票数 0

类似于Simulate a table with multiple rows just with SELECT statement的问题-这个问题要求一个多行的单列

如何模拟具有、多列、和行的表?

我已经走到了这一步(对于多列、单行):

代码语言:javascript
复制
SELECT 'John Doe' AS [Customer Name],
       '31' AS [Customer Age],
       'pizza' AS [Food]

但不确定如何获取多行数据。

使用sql-server

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-07 16:05:39

使用values表构造函数:

代码语言:javascript
复制
SELECT v.*
FROM (VALUES ('John Doe', 31, 'pizza'),
             ('John Doe', 31, 'pizza')
     ) v(customer_name, customer_age, food);

备注:

  • 不要在列名中使用空格。它们只会增加编写查询的难度。
  • age是一个糟糕的专栏。相反,你应该有出生日期。
  • 只需使用所需的值重复值列表即可。
票数 7
EN

Stack Overflow用户

发布于 2019-01-07 16:20:40

选项1: UNION ALL

代码语言:javascript
复制
SELECT
    [Customer Name] = 'John Doe',
    [Customer Age] = 31,
    Food = 'pizza'
UNION ALL
SELECT
    [Customer Name] = 'Jane Doe',
    [Customer Age] = 25,
    Food = 'cake'

您只需在第一组中提供列名:

代码语言:javascript
复制
SELECT
    [Customer Name] = 'John Doe',
    [Customer Age] = 31,
    Food = 'pizza'
UNION ALL
SELECT 'Jane Doe', 25, 'cake' UNION ALL
SELECT 'Jane Doe', 16, 'coke' UNION ALL
SELECT 'Jane Doe', 19, 'salad'

选项2: VALUES

代码语言:javascript
复制
SELECT
    T.[Customer Name],
    T.[Customer Age],
    T.Food
FROM
    (VALUES
    ('John Doe', 31, 'pizza'),
    ('Jane Doe', 25, 'cake')
    ) AS T([Customer Name], [Customer Age], Food)

我推荐第二种方法,因为您可以强制执行所需的数据类型,例如:

代码语言:javascript
复制
SELECT
    [Customer Name] = CONVERT(VARCHAR(50), T.[Customer Name]),
    [Customer Age] = CONVERT(TINYINT, T.[Customer Age]),
    Food = CONVERT(VARCHAR(100), T.Food)
FROM
    (VALUES
    ('John Doe', 31, 'pizza'),
    ('Jane Doe', 25, 'cake')
    ) AS T([Customer Name], [Customer Age], Food)

使用VALUES,您还可以直接连接到其他表(或应用函数),而无需将SELECT包装在CTE或子查询中。

但是,如果您想为了测试目的而模拟一个表(特别是如果您正在测试性能),我建议您不要使用,因为这两种方法都需要您显着地更改当前测试的语句。为此,只需创建一个临时表,该表的确切定义是您希望模拟并加载数据的表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54077740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档