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

标签 mysql subquery alias

我做了这样的查询:

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;

关于mysql - 从此 SQL 查询中删除变量(子查询帮助),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49137772/

相关文章:

sql - 作为子查询一部分的 SQL 列的运行总计

mysql - MySQL中没有子查询字段的模式计算?

linux - 后缀 : set privileges for a certain command pipe alias

mysql - 为什么 Perl 的 DBI 占位符会因负数 MySQL 查询而中断?

mysql交叉校验标签查询

php - 将countif mysql查询表显示为html

powershell - 为包含空格的命令创建别名

templates - C++ 模板别名的等价性

mysql - SQL 按首选值列表分组

PHP 文件上传.. 检索 URL