【问题标题】:INNER JOIN Distinct IDINNER JOIN 不同的 ID
【发布时间】:2010-07-16 15:09:53
【问题描述】:

我有以下代码:

FROM CTE_Order cte
    INNER JOIN tblOrders o
       ON cte.OrderId = o.Id
    INNER JOIN tblOrderUnits ou
       ON o.id = ou.OrderId                        
    INNER JOIN tblOrderServiceUnits osu
       ON ou.VMSUnitID = osu.UnitId

当我加入 ou 时,我会得到 2 个相同的单位 ID。这使得 Inner Join tblOrderServiceUnits 返回 4 行,其中 2 行重复。我需要它只返回不同的 2 行。如何使用 distinct to Inner Join only distinct ou.id?

抱歉解释不好,但基本上我只是想看看带有不同子查询的 INNER JOIN 是如何工作的,如果有人能给我一个例子,我可以从那里弄清楚。

【问题讨论】:

    标签: sql


    【解决方案1】:
    INNER JOIN (SELECT DISTINCT * FROM X) Alias
    ON Alias.ID = Primary.ID
    

    你的例子:

    INNER JOIN (SELECT DISTINCT VMSUnitID, OrderId FROM tblOrderUnits) ou
    ON o.id = ou.OrderId
    

    【讨论】:

    • 那么如果我需要在 OrderUnit 加入中选择不同的 VMSUnitID 我该怎么做?
    • 已更新帖子以进行澄清。
    • 如果一个表只包含 id 列并用作过滤器,那么执行 INNER JOIN 或代替 join 哪个更优呢 do WHERE someId IN (SELECT DISTINCT * FROM X)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 2013-01-25
    • 2020-06-15
    • 2019-04-05
    • 1970-01-01
    相关资源
    最近更新 更多