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

如何基于SQL表元数据查询指定表及外键关联表的内容?

实现思路

你已经通过系统视图查询到SalesLT.Customer的关联表为SalesLT.CustomerAddress和SalesLT.SalesOrderHeader,两张关联表均通过CustomerID外键字段关联SalesLT.Customer的主键CustomerID,使用多表关联查询即可一次性返回三张表的内容,以下是两种常用场景的单条查询语句:

场景1:仅返回同时有关联地址、关联订单的客户数据

使用INNER JOIN做等值关联,仅保留三张表匹配一致的记录:

SELECT *
FROM SalesLT.Customer c
INNER JOIN SalesLT.CustomerAddress ca 
    ON c.CustomerID = ca.CustomerID
INNER JOIN SalesLT.SalesOrderHeader soh 
    ON c.CustomerID = soh.CustomerID

场景2:返回所有客户数据(含无关联地址/订单的客户)

使用LEFT JOIN以客户表为基表,保留所有客户记录,无关联的地址、订单字段自动填充NULL:

SELECT *
FROM SalesLT.Customer c
LEFT JOIN SalesLT.CustomerAddress ca 
    ON c.CustomerID = ca.CustomerID
LEFT JOIN SalesLT.SalesOrderHeader soh 
    ON c.CustomerID = soh.CustomerID

注意事项

如果不同表存在同名字段(例如多表均有ModifiedDate、rowguid等公共字段),直接使用SELECT *会出现重名冲突,建议按需指定字段并设置别名,示例如下:

SELECT 
    c.CustomerID,
    c.FirstName,
    c.LastName,
    ca.AddressType,
    soh.SalesOrderNumber,
    soh.OrderDate
FROM SalesLT.Customer c
LEFT JOIN SalesLT.CustomerAddress ca 
    ON c.CustomerID = ca.CustomerID
LEFT JOIN SalesLT.SalesOrderHeader soh 
    ON c.CustomerID = soh.CustomerID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:48:01