Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
联合会影响Vertica SQL的随机性吗_Sql_Vertica - Fatal编程技术网

联合会影响Vertica SQL的随机性吗

联合会影响Vertica SQL的随机性吗,sql,vertica,Sql,Vertica,我从vertica数据库的查询中看到了非常奇怪的结果。下面是查询的结构 select column_a FROM (...... ....... ORDER BY RANDOM() limit 500 ) proxy UNION (.... ..... ORDER BY RANDOM() limit 500 ) 这是我的奇怪行为。如果我独立运行这两个子查询,它们的结果是随机的。如果我在外部select语句中独立运行这两个子查询,结果将随机化。但是,当我通过上面的查询将结果合并在一起时,结果不再

我从vertica数据库的查询中看到了非常奇怪的结果。下面是查询的结构

select column_a
FROM
(......
.......
ORDER BY RANDOM()
limit 500
) proxy
UNION
(....
.....
ORDER BY RANDOM()
limit 500
)
这是我的奇怪行为。如果我独立运行这两个子查询,它们的结果是随机的。如果我在外部select语句中独立运行这两个子查询,结果将随机化。但是,当我通过上面的查询将结果合并在一起时,结果不再随机,数据总是相同的。这对我来说毫无意义,我想不出任何解释

编辑:奇怪的是,一个接一个地更改联合,所有这些都恢复了随机性。我的查询甚至得到了不同的更现实的结果。但这很奇怪,因为当我将两个suquery放入一个

select * from (........
union .............
) GROUP by a HAVING count(a) > 1
无论我运行代码多少次,都不会返回任何结果。所以实际上,他们之间应该没有什么区别

然而,更奇怪的是以下几点。如果我切换子查询的顺序,使第二个在FROM语句中,第一个在UNION语句中,那么现在第二个查询得到随机结果,而第一个查询没有。我的问题进一步演变为:联盟是否通过声明消除了内部秩序?即使这样做实际上会影响结果

分辨率

我不知道为什么这会改变任何事情,但以下解决了这个问题:

选择列a

SELECT *
FROM
(......
.......
ORDER BY RANDOM()
limit 500
) proxy
UNION
(SELECT * FROM (
    SELECT ....
    .....
    ORDER BY RANDOM()
    limit 500
    ) proxy2
)

显然,在union中添加外部select语句可以让sql遵守order by random()语句。如有任何解释,将不胜感激。我开始对sql的结果失去了一点信心

您是否比较了
EXPLAIN
计划?投票结束此问题。如果没有
EXPLAIN
计划,就没有足够的信息来尝试形成对正在发生的事情的想法。不幸的是,我不愿意发布解释计划,数据库不是我的,也不想透露有关专栏的任何信息。您比较了
EXPLAIN
计划吗?投票结束这个问题。如果没有
EXPLAIN
计划,就没有足够的信息来尝试形成对正在发生的事情的想法。不幸的是,我不愿意发布解释计划,数据库不是我的,也不想透露有关列的任何信息