0

Where 句の一部に「ある定数と等しい」条件がある場合に、ANSI-92 以前の構文 (つまり *=) を使用して左結合を指定する構文は何ですか? (この場合、100 は定数です)

例:


SELECT t1.ID, t.* 
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t1.ID *= 100 and t1.SeqNo *= t.SeqNo

この場合、「t1」に一致するレコードがない場合でも、派生テーブル「t」のすべてのレコードが必要です。SeqNo に一致する行が 't' に存在しない場合、t1.ID が Select 句で NULL を返すようにします。

私が受け取っているエラーは、「外部結合の両方の用語に列を含める必要があります」です。

今のところ SQL Server 2005 でこのクエリを実行していますが、最終的には古い結合構文を必要とする Sybase 実装に対して使用される予定です。

前もって感謝します

4

1 に答える 1

0

これでうまくいくと思いますが、確実にテストする必要があります。

SELECT t1.ID, t.* 
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t.SeqNo *= t1.SeqNo AND 100 *= t1.ID

SeqNo 部分の順序を逆にして、どちらが結合の左側であるかをより明確に示していることに注意してください。

于 2009-03-02T21:23:48.640 に答える