首页 > 解决方案 > 相同的查询在 Sybase 10 和 Sybase 15 中显示不同的输出

问题描述

我们最近将数据库从 Sybase 10 迁移到了 Sybase 15。

当我在 Sybase 10 (SYC Sybase System 10) 中执行以下查询时,它会给我一行作为输出。

SELECT 
        'x'
    FROM
        employee
    WHERE
        EXISTS 
        (
            SELECT 
                    employee.emp_id 
                FROM 
                    employee 
                WHERE 
                    employee.branch_id = 3013 
                AND employee.emp_id = 20 
                AND employee.object_id > 1
        )

输出:

x
(1 row(s) affected)

当我在 Sybase 15 (SYC Adaptive Server Enterprise) 中执行相同的查询时,查询输出会生成 1653 行,这是员工表的总行数。

输出:

x
x
x
x
x
x
x
.....
(1653 row(s) affected)

您能帮帮我吗,因为我们的应用程序只需要一行作为输出并且获得多行会产生问题。(我们没有应用程序更改查询的代码)。

标签: sap-ase

解决方案


在遥远的过去,可能是关于 Sybase ASE 11,子查询处理发生了变化。在 ASE 11 之前,“IN”将为从子查询返回的每个匹配行返回一行;即使值相同。ASE 11 向上更正了这一点,因此只会返回不同的值。我不记得这是否会影响 EXISTS 功能,因为 Sybase ASE 11 发布已经 25 年了。

我不认为这是可以通过选项配置的东西。它可能需要更改代码并且您声明您没有源代码。


推荐阅读