【问题标题】:Can Cross join and in can be same query?Cross join 和 in 可以是同一个查询吗?
【发布时间】:2015-05-14 17:57:03
【问题描述】:

我正在尝试使用交叉连接来合并两张桌子,如下所示

select * from nasda_objects  
cross join (select * from nasda_objects);

同样的工作

但是当我尝试在交叉连接的左表中使用时,它不起作用

select * from nasda_objects where co_gid in (450,550,650)  
cross join (select * from nasda_objects);

所以不支持同一个查询中的 in 和 cross join ?

【问题讨论】:

  • 您在问题文本中引用了两个表,但您在查询中只引用了一个表。

标签: sql join


【解决方案1】:

试试这个;

select * from nasda_objects cross join (select * from nasda_objects)
where co_gid in (450,550,650);

即,您需要在加入表格时在最后添加where条件。

【讨论】:

  • 也许添加一些解释以使其更具指导性?
  • @GertArnold:- 试图补充,但我不确定 OP 在寻找什么,所以等待他回应。
【解决方案2】:

结构合理的查询:

select *
from nasda_objects cross join (select * from nasda_objects);
where co_gid in (450, 550, 650) 

不会工作,因为co_gid 没有定义。所以你知道,CROSS JOIN 是 SQL 中的一个运算符,仅在 FROM 子句中起作用。 WHERE 子句在 FROM 子句之后。

为防止出现语法错误,您需要表别名。我想这就是你想要的:

select *
from nasda_objects o1 cross join nasda_objects o2
where o1.co_gid in (450, 550, 650) ;

请注意,也不需要子查询。

我不确定您为什么要这样做。通常不需要同一张表的cross join。

【讨论】:

    猜你喜欢
    • 2016-04-10
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 2011-08-10
    • 2011-09-27
    • 1970-01-01
    相关资源
    最近更新 更多