You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

交叉连接仅返回单表行:同表交叉连接无法获取双列的问题

解决Cross Join只返回单列的问题

哦,我完全懂你碰到的这个小坑!你的交叉连接逻辑其实是对的,但问题出在SELECT子句的取值范围上——你只告诉数据库要返回1这个常量值,压根没把子查询里的2也选出来,所以结果自然只有一列啦。

原查询的问题分析

你的原查询:

select 1 from dual cross join (select 2 from dual) t1;

这里的cross join确实把dual表(一行)和子查询t1(一行)做了笛卡尔积,得到1行数据,但SELECT里只指定了取1,所以数据库只会返回这一个值。

修正后的查询写法

要同时拿到1和2两列,你需要在SELECT里明确包含两个表/子查询的内容,比如这两种写法都可以:

写法1:直接引用子查询的所有列

select 1, t1.* from dual cross join (select 2 from dual) t1;

这里t1.*会把子查询t1里的所有列(也就是那个2)都选出来,结果就是一行两列:1和2。

写法2:给列起别名,更清晰

如果想让结果列名更明确,可以给每个值起别名:

select 
    d.constant_one, 
    t1.constant_two 
from (select 1 as constant_one from dual) d
cross join (select 2 as constant_two from dual) t1;

这样返回的结果列会有清晰的名称constant_one和constant_two,值分别是1和2,可读性更好。

验证结果

不管用哪种写法,执行后都会得到一行两列的结果,和你预期的1 2一致啦。

内容的提问来源于stack exchange,提问作者ProgrammingEnthusiast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:18:35