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

如何不使用现有表实现cross join(交叉连接)操作?

完全可以实现,不需要创建任何实体表,你可以通过构造临时常量集合和原表做交叉连接来实现需求。

兼容全数据库的通用写法

假设你存储Col1的表名为source_table,可以用UNION ALL构造虚拟的数值序列:

SELECT t.Col1, num.Col2
FROM source_table t
CROSS JOIN (
    SELECT 1 AS Col2
    UNION ALL SELECT 2
    UNION ALL SELECT 3
) num
ORDER BY Col2, Col1;

主流新数据库简洁写法

支持VALUES行构造器的数据库(PostgreSQL、MySQL 8.0+、SQL Server等)可以用更简化的写法:

SELECT t.Col1, num.Col2
FROM source_table t
CROSS JOIN (VALUES (1), (2), (3)) AS num(Col2)
ORDER BY Col2, Col1;

Oracle适配写法

如果你使用Oracle数据库,需要调整为带DUAL的语法:

SELECT t.Col1, num.Col2
FROM source_table t
CROSS JOIN (
    SELECT 1 AS Col2 FROM DUAL
    UNION ALL SELECT 2 FROM DUAL
    UNION ALL SELECT 3 FROM DUAL
) num
ORDER BY Col2, Col1;

上述所有写法中的子查询都是在内存中生成临时虚拟表,不会在数据库中产生任何实体存储对象,完全符合你不创建新表的要求,执行后输出的结果和你给出的示例完全一致。如果后续需要扩展更多Col2的取值,直接在UNION ALL或者VALUES列表中添加对应数值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:36:04