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)? Этот столбец принимает нули?