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

编写SQL查询:基于指定C_id获取A表符合条件的记录

问题描述

有三张表A、B、C,表结构如下:

表A:A_id, name
表B:B_id, A_id, C_id
表C:C_id, a1, a2

已知目标C_id,需从A表中获取满足以下任一条件的所有记录:

  • A_id等于目标C_id对应C表中的a1值
  • A_id等于目标C_id对应C表中的a2值
  • A_id通过表B与目标C_id关联匹配

示例数据

表A

A_idName
1jon
2Alice
3Bob
4Clara

表B

B_idA_idC_id
111
241
322
442

表C

C_ida1a2
113

当指定C_id=1时,应返回A_id为1、3、4的记录。

解决方案

可以通过两种方式实现需求,以下是具体SQL写法:

方式一:用UNION合并多条件结果

SELECT a.*
FROM A a
JOIN C c ON a.A_id = c.a1 OR a.A_id = c.a2
WHERE c.C_id = 1

UNION

SELECT a.*
FROM A a
JOIN B b ON a.A_id = b.A_id
WHERE b.C_id = 1;

方式二:用IN子句整合符合条件的A_id

SELECT *
FROM A
WHERE A_id IN (
    SELECT a1 FROM C WHERE C_id = 1
    UNION
    SELECT a2 FROM C WHERE C_id = 1
    UNION
    SELECT A_id FROM B WHERE C_id = 1
);

两种写法都会自动去重,确保不会返回重复的A表记录,都能得到符合要求的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:07:05