PRE ANSI-92左結合構文(Sybase)
-
03-07-2019 - |
質問
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'に存在しない場合、Select句でt1.IDがNULLを返すようにします。
受け取ったエラーは、「外部結合の両方の用語に列が含まれている必要があります」です。
今のところ、SQL Server 2005でこのクエリを実行していますが、最終的には古い結合構文を必要とするSybase実装に対して使用されます。
事前に感謝
解決
これでうまくいくと思いますが、確実にテストする必要があります:
SELECT t1.ID, t.*
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t.SeqNo *= t1.SeqNo AND 100 *= t1.ID
SeqNo部分の順序を逆にしたことに注意してください。これにより、結合の左側がわかりやすくなります。
所属していません StackOverflow