5

提案されたクエリを Sybase ASE 12 で使用しようとしましたが、構文エラーが発生しました。

SELECT 
    item, 
    ( SELECT TOP 1 tags.tag
      FROM #tags tags
        LEFT JOIN t o
          ON  tags.tag = o.tag
          AND o.item_id = n.item_id 
      WHERE o.tag IS NULL
      ORDER BY tags.tag
    ) 'tag',
    value  
FROM
    t_new n

エラー:Incorrect syntax near the keyword 'top'.

TOP 1 tagただし、( ... ORDER BY tag) を MAX()に置き換えた場合、同じクエリが機能しました。

SELECT 
    item, 
    ( SELECT max(tags.tag)
      FROM #tags tags
        LEFT JOIN t o
          ON  tags.tag = o.tag
          AND o.item_id = n.item_id 
      WHERE o.tag IS NULL
        --  ORDER BY tags.tag
    ) 'tag',
    value  
FROM
    t_new n
  • ( TOP 1 tag... ORDER BY tag) を使用すると、Sybase の相関サブクエリで問題が発生するのはなぜですか?

  • min()/max() を使用しない元のクエリに対する修正はありますか?

4

2 に答える 2

5

Adaptive Server Enterprise バージョン 12.5.3 は、外部クエリの select 文で top n 節をサポートしますが、サブクエリの選択リストではサポートしません。これは、Microsoft SQL Server とは異なります。サブクエリで Adaptive Server の top n 句を使用しようとすると、構文エラーが発生します。

ここのASE 12.5.3ドキュメントから

于 2013-02-15T14:31:53.987 に答える
0

私はそれが遅いことを知っていますが、サブクエリ内のTOPはsybaseの最新バージョンで使用できます。

于 2014-09-09T09:57:09.173 に答える