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

如何从无关联的两张表中联合获取指定字段?附表结构与筛选条件

嘿,这个场景我之前处理过,两张完全没关联的表要组合出你需要的字段,其实有两种很实用的办法,我给你拆解一下:

方法一:用交叉连接(CROSS JOIN)实现

这种方式适合你想把question表的所有数据,和answer表中符合ans_id = :id的那条记录做组合的场景,SQL写法如下:

SELECT 
    q.question, 
    q.ans1, 
    q.ans2, 
    q.ans3, 
    q.ans4, 
    a.answerAry
FROM question q
CROSS JOIN answer a
WHERE a.ans_id = :id;

原理很简单:交叉连接会生成两张表的笛卡尔积,但我们通过WHERE子句限定了answer表只返回符合条件的行(如果ans_id是唯一主键的话,就是单独一行),所以最终结果就是question表的每一行数据,都带上这条匹配的answerAry字段。

方法二:用子查询直接提取answerAry

如果你觉得交叉连接有点绕,也可以直接在SELECT列表里嵌套子查询,直接拿到需要的answerAry值,写法更简洁:

SELECT 
    q.question, 
    q.ans1, 
    q.ans2, 
    q.ans3, 
    q.ans4,
    (SELECT a.answerAry FROM answer a WHERE a.ans_id = :id) AS answerAry
FROM question q;

这里要注意一点:如果answer表中存在多条ans_id = :id的记录,这个子查询会报错,所以要么你能保证ans_id是唯一的,要么就在子查询里加上LIMIT 1来强制返回一行数据。

要是你还需要对question表的数据做筛选,直接在FROM question q后面加WHERE子句就行,比如WHERE q.qid IN (1,2,3)之类的条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:16:12