Sql 基于内部联接的select查询不起作用,不返回任何内容
我有下面的代码,它不会在应该返回的时候返回任何值。有人能发现它有什么毛病吗?当我运行脚本时,我得到0个值,返回0个受影响的行,即使我知道应该选择一些行 这只是整个脚本的一部分,当我运行所有内容时,会收到错误消息警告:通过聚合或其他集合操作消除空值。但我不知道这对我的剧本意味着什么。我在脚本中只有一个groupby,我没有在这里发布,因为编码是有效的。有人知道吗 下面的代码应创建一个临时表,并在满足以下条件的情况下从表StatusHistorik向临时表插入行: 1[NyStatus]=4 NyStatus是StatusHistorik表中的一列 2表SKL_AdminKontroll_SkaÅtgärdas F中不应存在变量EnhetsId。代码:F.EnhetsId为null 我在这两种情况下都使用了内部联接。这将导致temp表中出现许多观察值/行,但不返回任何结果。有没有人发现编码有任何错误可以解释结果的缺失 我应该提到的是,当我注释掉最后一个内部连接和where语句的最后一部分时,脚本按预期工作。因此,我怀疑这是最后一个内部连接语句不知何故是错误的Sql 基于内部联接的select查询不起作用,不返回任何内容,sql,sql-server,select,inner-join,where,Sql,Sql Server,Select,Inner Join,Where,我有下面的代码,它不会在应该返回的时候返回任何值。有人能发现它有什么毛病吗?当我运行脚本时,我得到0个值,返回0个受影响的行,即使我知道应该选择一些行 这只是整个脚本的一部分,当我运行所有内容时,会收到错误消息警告:通过聚合或其他集合操作消除空值。但我不知道这对我的剧本意味着什么。我在脚本中只有一个groupby,我没有在这里发布,因为编码是有效的。有人知道吗 下面的代码应创建一个临时表,并在满足以下条件的情况下从表StatusHistorik向临时表插入行: 1[NyStatus]=4 NyS
declare @temp2 table (
EnhetsId varchar(50),
TjanstId Int,
Tabell varchar(50),
Kommentar ntext,
Uppdaterad datetime
);
WITH ENHET_AVSLUT AS
(
SELECT DISTINCT A.[EnhetsId]
FROM [StatistikinlamningDataSKL].[dbo].[StatusHistorik] A
inner join (
select [EnhetsId], max(SenastUppdaterad) as SenastDatum
from [StatistikinlamningDataSKL].[dbo].[StatusHistorik]
group by [EnhetsId]
) B
on A.[EnhetsId] = B.[EnhetsId] and A.[SenastUppdaterad] = B.SenastDatum
INNER JOIN
StatistikinlamningDataSKL.dbo.SKL_AdminKontroll_SkaÅtgärdas F ON A.EnhetsId = F.EnhetsId
WHERE [NyStatus] = 4 AND F.EnhetsId is null
)
insert into @temp2
(EnhetsId, TjanstId, Tabell, Kommentar, Uppdaterad)
SELECT
EnhetsId, 1, ''GR_PS09_1'', ''OK'', getdate()
from ENHET_AVSLUT
select * from @temp2
致以最良好的祝愿,
汉内斯因为你在说
The variable "EnhetsId" should not exist in the table "SKL_AdminKontroll_SkaÅtgärdas" (F). Code: "F.EnhetsId is null".
内部联接将尝试联接表,但无法对空值执行联接,因此结果将是零行
所以您必须尝试使用左联接,不管联接条件是否满足,左侧的表都将被拉入
不过,我必须警告您,如果表太大,可能会出现性能问题
您的内部SQL必须类似于
SELECT DISTINCT A.[EnhetsId]
FROM [StatistikinlamningDataSKL].[dbo].[StatusHistorik] A
inner join (
select [EnhetsId], max(SenastUppdaterad) as SenastDatum
from [StatistikinlamningDataSKL].[dbo].[StatusHistorik]
group by [EnhetsId]
) B
on A.[EnhetsId] = B.[EnhetsId] and A.[SenastUppdaterad] = B.SenastDatum
LEFT JOIN
StatistikinlamningDataSKL.dbo.SKL_AdminKontroll_SkaÅtgärdas F ON A.EnhetsId = F.EnhetsId
WHERE [NyStatus] = 4
对表SKL_AdminKontroll_SkaÅtgärdas使用左外部联接。谢谢!!它解决了这个问题。尽管如此,我还是注意到完整的脚本仍然无法工作,我认为这是由于错误消息:警告:通过聚合或其他集合操作消除了Null值。你对这个问题有什么想法吗?你是对的,左连接是正确的方法。但我仍然需要和F.EnhetsId为null,以避免表SKL_AdminKontroll_SkaÅtgä中没有的值rdas@user2995808对,添加F.EnhetsID为NULL将排除表F中的那些,这相当于WHERE NOT EXISTS…在F中选择join谓词。。看见