Tsql bigint id上的T-SQL左连接只返回右表上低于101的id

Tsql bigint id上的T-SQL左连接只返回右表上低于101的id,tsql,join,left-join,bigint,Tsql,Join,Left Join,Bigint,我在SQLServer2008上有两个表。 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

我在SQLServer2008上有两个表。
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,右表的最后一行为null。这是唯一高于100的值

如果我在不使用WHERE子句的情况下运行查询,它会在左侧表中显示所有行,但右侧的值只有apear(如果低于101),否则将显示null


有人能帮帮我吗,我做错了什么,或者这是一个限制还是一个bug?

Case也是一个动词,所以它可能会被弄糊涂。请在[]中尝试表名和列名。例如,[case].[id]=[ownership].[fCase]。是否要仔细检查[case].[id]和[ownership].[fCase]是否都是bigint。如果您当前的值是1-170,那么为什么是bigint(9223372036854775807)?该列是否接受空值?

案例
表中是否有一行具有
id=140
?(例如:什么是
从id=140的情况下选择COUNT(*)是的,值存在,正如我说的从1到170。在这两张表中。@João Correia:你真的检查过了吗?或者你是在假设吗?你问了我之后我查过了(以防万一)。这实际上是一个正在生产中的系统(mysql),但我们正在将其移植到SQL Server。当创建一个案例时,将创建一个所有权记录;当将一个记录传递给另一个所有者时,将创建一个新的所有权记录,并带有另一个日期和时间。因此,准确地说,每个案例至少有一个所有权记录。这不能是您实际运行的查询。这会给你一个语法错误。