mysql 在查询中生成“假”记录

ej83mcc0  于 2023-04-10  发布在  Mysql
关注(0)|答案(3)|浏览(352)

我有一个非常基本的陈述,例如:

SELECT pet, animal_type, number_of_legs 
FROM table

然而,在table当前所在的位置,我想插入一些假数据,沿着所示:

rufus       cat     3
franklin    turtle  1
norm        dog     5

有没有可能从查询中“生成”这些假记录,将每个值与相应的字段相关联,以便将它们作为查询的结果返回?

zu0ti5jz

zu0ti5jz1#

SELECT pet, animal_type, number_of_legs FROM table
union select 'rufus',    'cat',    3
union select 'franklin', 'turtle', 1
union select 'norm',     'dog',    5

这将为您提供table的内容以及您想要的3条记录,避免重复,如果重复可以,则将union替换为union all
编辑:根据你的评论,对于tsql,你可以做:

select top 110 'franklin', 'turtle', 1
from sysobjects a, sysobjects b          -- this cross join gives n^2 records

请确保选择一个n^2大于所需记录的表,或者反复进行交叉连接

exdqitrt

exdqitrt2#

我不完全确定你想做什么,但MySQL完全能够选择“模拟”数据并将其打印在表中:

SELECT "Rufus" AS "Name", "Cat" as "Animal", "3" as "Number of Legs" 
UNION 
SELECT "Franklin", "Turtle", "1" 
UNION 
SELECT "Norm", "Dog", "5";

这将导致:

+----------+--------+----------------+
| Name     | Animal | Number of Legs |
+----------+--------+----------------+
| Rufus    | Cat    | 3              |
| Franklin | Turtle | 1              |
| Norm     | Dog    | 5              |
+----------+--------+----------------+

以这种方式进行查询可以避免在临时表中保存信息,但我不确定这是否是正确的方式。

abithluo

abithluo3#

如果有人正在寻找Spark SQL,那么语法需要一些额外的括号:

SELECT 'johny' AS pet, 'human' AS animal_type, 2 AS number_of_legs 
UNION (SELECT 'rufus',    'cat',    3)
UNION (SELECT 'franklin', 'turtle', 1)
UNION (SELECT 'norm',     'dog',    5)

SELECT pet, animal_type, number_of_legs FROM existing_table
UNION (SELECT 'rufus',    'cat',    3)
UNION (SELECT 'franklin', 'turtle', 1)
UNION (SELECT 'norm',     'dog',    5)

相关问题