还在select 1 union select 2 union……?

用Union吧,太长

有时候,要临时建个短列表,2047以内的纯数字还不错,有个表,也够用

select number from master..spt_values where type='P' and number<100

非纯数字的,上Union

select 'a' as col union select 'b' union select 'c' union select '1' union select '2'
union ......

用values吧,神奇

嗯,正题

--单个字段
SELECT * FROM (VALUES ('a'),('b'),('c'),('1'),('2')) AS tb_name(col_name)
--多个字段
SELECT * FROM 
(VALUES (1, '2'), (3, 'a'), (5, '中'), (7, 'b'), (9, '1') ) 
AS tb_name(col_name1, col_name2)

引申Values用法

--作为查询某一行数据中,几个字段值的最值、平均值等
select id,
select max(col) from (
(values (col1),(col2),(col3) ) as tb (col)
) as maxcol
from maintb

--既然可以作为字段,那么当然可以作为条件
select id
from maintb
where(
select max(col) from (
(values (col1),(col2),(col3) ) as tb (col)
)
)>123


版权声明:本文为gdyflxw原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。