0

Sql Server 2008 に 2 つのテーブルがあります ownership。3 つのフィールドとcase、ID フィールド (bigint) で両方を結合する必要がある別の 3 つのフィールドがあります。

テスト目的で、各テーブルから 1 つのフィールドのみを使用しています。このフィールドは bigint で、1 から 170 までの値を持ちます (現時点では)。

私のクエリは次のとおりです。

SELECT DISTINCT
    ownership.fCase,
    case.id
FROM
    ownership LEFT JOIN case ON (case.id=ownership.fCase)
WHERE 
    ownership.dUser='demo' 

これは、両方の列で同じ値を持つ 4 つの行を返すことが期待されていました。問題は、右側のテーブルの最後の行が fCase = 140 の場合に null になることです。これは 100 を超える唯一の値です。

WHERE 句を指定せずにクエリを実行すると、左側のテーブルにすべての行が表示されますが、右側の値は 101 未満の場合にのみ表示され、それ以外の場合は null が表示されます。

誰かが私を助けることができますか、私は何か間違ったことをしていますか、それともこれは制限またはバグですか?

4

1 に答える 1

1

case も動詞なので混乱するかもしれません。[] で表名と列名を試してください。EG [ケース].[id] = [所有権].[fCase]. [case].[id] と [ownership].[fCase] の両方が bigint であることを再確認してください。現在の値が 1 ~ 170 の場合、なぜ bigint (9,223,372,036,854,775,807) なのですか? その列はヌルを受け入れますか?

于 2011-08-28T20:35:27.983 に答える