【问题标题】:Sybase outer join behaviourSybase 外连接行为
【发布时间】:2011-04-27 11:17:12
【问题描述】:

我正在处理一些旧版 SQL(用 sybase 术语编写)并将其转换为与 SQL-92 兼容的形式。问题是,我无法理解 "*=" 的行为方式。

查询(经过适当审查):

SELECT 
    C.*, SUM(P.qty) from Cars C, Parts P
WHERE 
    C.carid = 1
AND C.carid *= P.carid
AND C.missingpart *= P.missingpart
AND C.manufacturer *= P.manufacturer
AND P.qty is not null
GROUP BY C.carid, C.missingpart, C.manufacturer

我把它转换成:

SELECT
    C.*, SUM(P.qty) from Cars C
        LEFT JOIN Parts P
        ON C.carid = P.carid
        AND C.missingpart = P.missingpart
        AND C.manufacturer = P.manufacturer
WHERE
    C.carid = 1
AND P.qty is not null
GROUP BY C.carid, C.missingpart, C.manufacturer

但事实证明 - 它们并不等价。有人可以帮我理解 sybase 外连接中“*=”的确切行为是什么以及为什么我的两个查询不相同?

谢谢:)

PS:我使用的是 Sybase ASE TDS 5.5

【问题讨论】:

    标签: sql sap-ase


    【解决方案1】:

    尝试将AND P.qty is not null 从 WHERE 子句移动到连接表达式。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 2013-11-23
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多