从此SQL查询中删除变量(子查询帮助)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从此SQL查询中删除变量(子查询帮助)相关的知识,希望对你有一定的参考价值。

我做了这样的查询:

SELECT
COUNT(Prop1) AS CurrentAmount,

@prop1:= Prop1,
@prop2:= Prop2,
@prop3:= Prop3,
@prop4:= Prop4,
(SELECT COUNT(ID) FROM myTable WHERE Prop1=@prop1 AND Prop2=@prop2 AND Prop3=@prop3 AND Prop4=@prop4 GROUP BY Prop1) AS TotalAmount


FROM myTable
WHERE Target = 1876
GROUP BY Prop1, Prop2, Prop3, Prop4;

请注意名为CurrentAmount和TotalAmount的别名列。我假装他们计算了分配Target = 1876的文章数量与表中其他类似文章的数量(其他与Prop1-4具有相同值但分配给其他目标的数量)相比较。

然而。我不喜欢在普通列中使用@variables的方式。计算这个是另一种方法,TotalAmount在子查询中是完全自包含的吗?

保持WHERE Target = 1876是非常重要的。其他一切都可以改变。

答案

试试这个:

SELECT
COUNT(A.Prop1) AS CurrentAmount
 (SELECT COUNT(B.ID) FROM myTable B WHERE 
 A.Prop1=B.Prop1 AND A.Prop2=B.Prop2 AND 
 A.Prop3=B.Prop3 AND A.Prop4=B.Prop4 GROUP BY 
 B.Prop1) AS TotalAmount
FROM myTable A
WHERE Target = 1876
GROUP BY A.Prop1, A.Prop2, A.Prop3, A.Prop4;

以上是关于从此SQL查询中删除变量(子查询帮助)的主要内容,如果未能解决你的问题,请参考以下文章

sql 子查询返回的值不止一个怎么解决?

带有子查询的休眠标准

我想从此方法中删除本机查询。我该怎么做?

在 T-SQL 中,如何在子查询中引用表变量?

SQL 连接子查询

关于SQL DELETE嵌套子查询问题