
[英]T-SQL: efficiently DELETE records in right table that are not in left table when using RIGHT JOIN
[英]T-SQL LEFT JOIN on bigint id return only ids lower than 101 on right table
我在Sql Server 2008上有两个表。具有3个字段的ownership
和具有其他3个字段的case
,我需要在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子句的查询,则它将在左侧表中显示所有行,但仅在以下101处显示右侧,否则显示右侧的值。
有人可以帮我吗,我做错什么了吗?这是限制还是错误?
大小写也是动词,因此可能会造成混淆。 在[]中尝试使用表名和列名。 EG [案例]。[id] = [所有权]。[fCase]。 您是否想仔细检查[case]。[id]和[ownership]。[fCase]都是bigint。 如果您当前的值为1-170,那么为什么要选择bigint(9,223,372,036,854,775,807)? 该列是否接受空值?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.