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

如何用单条SQL语句通过CROSS JOIN实现两个查询的笛卡尔积?

解决方法:用CROSS JOIN生成笛卡尔积

嗨,这个需求太常见啦!要实现你要的两个结果集的笛卡尔积(每个service对应所有city的组合),直接用SQL的**CROSS JOIN(交叉连接)**就搞定了——这正是专门用来生成笛卡尔积的语法,会自动把左侧结果集的每一行和右侧结果集的每一行进行组合。

具体实现示例

假设你的第一个返回service的查询是获取值1、2、3,第二个返回city的查询是获取值4、5,你可以把这两个查询作为子查询,用CROSS JOIN连接起来:

SELECT s.service, c.city
FROM (
    -- 替换成你返回service列的原始SQL语句
    SELECT 1 AS service UNION SELECT 2 UNION SELECT 3
) AS s
CROSS JOIN (
    -- 替换成你返回city列的原始SQL语句
    SELECT 4 AS city UNION SELECT 5
) AS c;

针对实际表的调整

如果你的两个结果集是从真实数据表中查询出来的(比如第一个是从服务表筛选,第二个是从城市表筛选),只需要把子查询替换成你的实际查询逻辑就行:

SELECT s.service, c.city
FROM (
    -- 这里是你获取service列的原始查询
    SELECT service FROM your_service_table WHERE [你的筛选条件]
) AS s
CROSS JOIN (
    -- 这里是你获取city列的原始查询
    SELECT city FROM your_city_table WHERE [你的筛选条件]
) AS c;

执行这条SQL后,就能得到你想要的结果:

servicecity
14
15
24
25
34
35

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:56:52