T-SQL LEFT JOIN для идентификатора bigint возвращает только идентификаторы ниже 101 в правой таблице - PullRequest
0 голосов
/ 28 августа 2011

У меня есть две таблицы на Sql Server 2008. ownership с 3 полями и case с другими 3 полями. Мне нужно объединить обе области в поле идентификатора (bigint).

В целях тестирования я использую только одно поле из каждой таблицы.Это поле 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. Это единственное значение выше 100.

Если я запускаю запрос без предложения WHERE, он показывает все строки в левой таблицено значения справа отображаются только в том случае, если ниже 101 в противном случае отображается ноль.

Может ли кто-нибудь мне помочь, я что-то делаю неправильно или это ограничение или ошибка?

1 Ответ

1 голос
/ 29 августа 2011

падеж также глагол, поэтому он может запутаться.Попробуйте использовать имена таблиц и столбцов в [].EG [case]. [Id] = [владение]. [FCase].Нравится ли вам дважды проверить, что [case]. [Id] и [owner]. [FCase] ​​оба bigint.Если ваши текущие значения 1-170, то почему bigint (9,223,372,036,854,775,807)?Этот столбец принимает пустые значения?

...