可以交叉加入和可以相同的查询吗?

时间:2015-05-14 17:57:04

标签: sql join

我正在尝试使用交叉连接来支持两个表格,如下所示

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);

那么不支持同一查询中的交叉连接吗?

2 个答案:

答案 0 :(得分:0)

试试这个;

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

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

答案 1 :(得分:0)

结构合理的查询:

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到同一个表。