小编典典

父子表记录-构建SQL查询

sql

这是我的表格和这些表格的数据

表名: 代码

CID Code
1   abc
2   def
3   xyz

表名: 详细信息

ID  Name    CID
1     a       1
2     b       2

结果表:

ID      Code    Name
1       abc     a
2       abc     Null
3       def     b
4       def     Null
5       xyz     Null
6       xyz     Null

我想从代码表中获取所有记录,而对于每个代码,我必须从详细信息表中获取所有行,如果某些代码具有所需的值,如果没有,则为Null

谢谢


阅读 216

收藏
2021-04-14

共1个答案

小编典典

听起来您在寻找笛卡尔积:

SELECT
    c.CID * d.ID AS ID,
    c.Code,
    CASE
        WHEN c.CID = d.CID THEN d.Name
        ELSE NULL
    END AS Name
FROM Code c
CROSS JOIN Details d

尽管对于较大的表,笛卡尔乘积相当慢…所以请确保这是您真正想要的。

2021-04-14