从 sql 服务器中的 linkedserver 调用时,from 子句中的 Sybase 子查询不能在哪里?

Sybase subquery in from clause cannot have where when called from linkedserver in sql server?

以下 sql 通过 "SAP ASE OLE DB Provider" 在 sql 服务器中工作。

select * from openquery(Sybase,'
  select * from (
    select * from X
  ) x
')

但是,下面的方法不起作用。这听起来像是一个可怕的错误。

select * from openquery(Sybase,'
    select * from (
      select * from X 
      where not exists (select * from Y where Y.c = X.c) -- c is not key in both tables
    ) x
')

是否有重写子查询使其工作的方法? (它必须在子查询中)。还是Sybase链接服务器驱动有问题?

试试这个(如果 c 是整数且不能为 -1)

select
    *
from
    (   select
            X.*
        from
            X
            left join ( select distinct
                            c
                        from
                            Y) as y on X.c = y.c
            join (  select
                        -1 as c) as z on coalesce(y.c, -1) = z.c
    ) x