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

如何合并字段不同的Books与Customers表并按CustomerId统一筛选查询

实现方案

你可以通过公共表表达式(CTE)统一声明目标CustomerId,只需修改一处即可完成查询,同时保证返回字段格式和你要求的一致,参考SQL如下:

WITH query_params AS (
    -- 仅需要在此处修改为你要查询的目标CustomerId
    SELECT 1001 AS target_cid
)
-- 读取Customers表的对应记录
SELECT
    c.CustomerId,
    c.FirstName,
    c.LastName,
    c.BookTitle
FROM Customers c
INNER JOIN query_params qp ON c.CustomerId = qp.target_cid

UNION ALL

-- 读取Books表的对应关联记录,补全客户基础字段
SELECT
    b.CustomerId,
    c.FirstName,
    c.LastName,
    b.BookTitle2 AS BookTitle
FROM Books b
INNER JOIN query_params qp ON b.CustomerId = qp.target_cid
INNER JOIN Customers c ON b.CustomerId = c.CustomerId

说明

  • 如果你需要对结果中重复的书籍记录去重,把UNION ALL替换为UNION即可,不需要去重时UNION ALL的查询性能更高
  • 该写法兼容 PostgreSQL、MySQL 8.0+、SQL Server、Oracle 等所有支持CTE的主流数据库
  • 如果你使用的是不支持CTE的低版本数据库,也可以用变量替代,比如MySQL低版本可以先执行SET @target_cid = 1001;,后续两处查询条件直接引用该变量即可,同样只需要修改一次

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:57:02