从直线上的值列表中选择

aemubtdh  于 2021-06-26  发布在  Hive
关注(0)|答案(3)|浏览(288)

我使用beeline(一个基于sqlline的jdbc客户机)来运行配置单元查询。我想从一个列表中选择如下值:

SELECT DISTINCT * FROM (a,b,b,c,d,..z)

有可能吗?

smtd7mpg

smtd7mpg1#

你可以试试 split 以及 explode ```
SELECT DISTINCT * FROM
(
select explode( split('a,b,b,c,d,e,f' ,',')) c
) as t
ORDER BY c

qyswt5oh

qyswt5oh2#

你也可以用 stack ,它的工作速度比union快得多:

hive> select id from
    > (
    > select stack(5, --the number of elements
    > 10 ,
    > 20 ,
    > 30 ,
    > 40 ,
    > 50
    > ) as (id)
    > )s;
OK
10
20
30
40
50
Time taken: 4.88 seconds, Fetched: 5 row(s)
w6mmgewl

w6mmgewl3#

SELECT DISTINCT *
FROM (
    SELECT 12
    UNION SELECT 23
    UNION SELECT 34
    UNION SELECT 12
    UNION SELECT 23
) AS t1;

ps:另请参阅非常密切相关的问题:如何从sql server中的值列表中进行选择

相关问题