sap-ase - 相同的查询在 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)
您能帮帮我吗,因为我们的应用程序只需要一行作为输出并且获得多行会产生问题。(我们没有应用程序更改查询的代码)。
解决方案
在遥远的过去,可能是关于 Sybase ASE 11,子查询处理发生了变化。在 ASE 11 之前,“IN”将为从子查询返回的每个匹配行返回一行;即使值相同。ASE 11 向上更正了这一点,因此只会返回不同的值。我不记得这是否会影响 EXISTS 功能,因为 Sybase ASE 11 发布已经 25 年了。
我不认为这是可以通过选项配置的东西。它可能需要更改代码并且您声明您没有源代码。