T-SQL LEFT JOIN для идентификатора bigint возвращает только идентификаторы ниже 101 в правой таблице

У меня есть две таблицы на Sql Server 2008.ownership с 3 полями и case с другими 3 полями мне нужно объединить оба поля ID (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, в противном случае будет показано значение NULL.

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

1 ответ

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

Другие вопросы по тегам