首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NZSQL中使用limit with union all时出错

在NZSQL中使用limit with union all时出错
EN

Stack Overflow用户
提问于 2014-06-18 22:24:04
回答 2查看 2.7K关注 0票数 2

我正在尝试随机抽样一周内的条目。为了确保工作日和周末条目的平衡,我绘制了两个单独的sql语句,如下所示:

代码语言:javascript
复制
select * FROM admin.acct_activity
where RANDOM() <=1
        --weekday
        and extract(day from page_hit_ts) Between 6 and 10
limit 500
UNION all

SELECT *
FROM admin.acct_activity
where RANDOM() <=1
        --weekend
        and extract(day from page_hit_ts) Between 11 and 12
limit 200
/* to-do
 1. limit results for each query
 2. order query results by date*/

错误消息为:

代码语言:javascript
复制
"all" (at char 121) expecting a keyword (State:42000, Native Code: 1B)

这是Netezza SQL (NZSQL)

第一个select语句中的limit语句似乎导致了错误。有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2014-06-18 22:38:09

我认为你可以用括号做到这一点:

代码语言:javascript
复制
(select *
 FROM admin.acct_activity
 where RANDOM() <=1 and extract(day from page_hit_ts) Between 6 and 10
 limit 500
)
UNION all
(SELECT *
 FROM admin.acct_activity
 where RANDOM() <=1 and extract(day from page_hit_ts) Between 11 and 12
 limit 200
)

如果没有,您绝对可以使用子查询来实现:

代码语言:javascript
复制
select t.*
from ((select *
       FROM admin.acct_activity
       where RANDOM() <=1 and extract(day from page_hit_ts) Between 6 and 10
       limit 500
      )
     UNION all
     (SELECT *
      FROM admin.acct_activity
      where RANDOM() <=1 and extract(day from page_hit_ts) Between 11 and 12
      limit 200
     )
    ) t
票数 5
EN

Stack Overflow用户

发布于 2014-06-18 22:35:49

每个查询只能设置一条LIMIT语句。您应该将每个有限的查询放入一个临时表中,然后对临时表执行UNION ALL操作。

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

https://stackoverflow.com/questions/24288141

复制
相关文章

相似问题

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