首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Netezza中不存在的

问如何使用Netezza中不存在的
EN

Stack Overflow用户
提问于 2016-04-12 18:06:39
回答 1查看 7.2K关注 0票数 1

我在Netezza有三张桌子。

表1:仓库

代码语言:javascript
复制
CREATE TABLE STORES
(
    STORE_NAME CHARACTER VARYING(10),
    STORE_TYPE CHARACTER VARYING(10)
);

表2:城市

代码语言:javascript
复制
CREATE TABLE CITIES
(
    CITY CHARACTER VARYING(10)
);

表3: CITIES_STORES

代码语言:javascript
复制
CREATE TABLE CITIES_STORES
(
    STORE_TYPE CHARACTER VARYING(10),
    CITY CHARACTER VARYING(10)
);

我需要找到所有城市都有的store_type。所以我试着按照下面的方法来做。如果对于特定的store_type (在Stores表中),我找不到store_type不存在的任何状态,那么store_type就是我的答案。

我编写了以下查询并在Netezza中运行:

代码语言:javascript
复制
select distinct
    store_type
from
    stores
where
    not exists (
                    select *
                    from
                        cities
                    where
                        not exists (
                                        select *
                                        from
                                            cities_stores
                                        where
                                            cities_stores.city = cities.city
                                            and cities_stores.store_type = stores.store_type
                                    )
               );

但是它给出了一个错误

错误:(2)不支持这种形式的关联查询--考虑重写

请告诉我哪里出了问题。这是Netezza数据库的问题吗?

EN

回答 1

Stack Overflow用户

发布于 2016-04-15 14:29:36

一般来说,Netezza中的相关子查询是个坏主意。有很多好的资源证明了这一点。实际上,Netezza试图确定为您等效的联接语法,而不是执行写入的语句。当它不能的时候,你就会得到那个错误。

为了绕开它,只需在第一次写等效的联接即可。

代码语言:javascript
复制
select distinct
  store_type
from
  stores str
  left outer join cities_stores cts using (store_type)
  left outer join cities cit using (city)
where
  city is null

注意:您说希望找到所有城市中都存在的store_type,但是您的语句返回在任何城市中都不存在的store_types。我重写了您的SQL,而不是您在问题中指出的内容。

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

https://stackoverflow.com/questions/36580907

复制
相关文章

相似问题

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