Mysql 此查询的有效语法是什么?
我试图对一个字段求和,如果条件字段id重复,它将仅计为1,而应用id等于1Mysql 此查询的有效语法是什么?,mysql,syntax,Mysql,Syntax,我试图对一个字段求和,如果条件字段id重复,它将仅计为1,而应用id等于1 SELECT SUM(IF(PU.field_id IS DISTINCT AND PU.app_id =1,1,0)) as "With Reco" FROM tbl.PutUser. 我知道对一些人来说这只是小菜一碟。我们可以使用MySQL特有的IF()函数 SELECT COUNT(DISTINCT IF(pu.app_id=1,pu.field_id,NULL)) AS `With Reco` F
SELECT SUM(IF(PU.field_id IS DISTINCT AND PU.app_id =1,1,0)) as "With Reco" FROM tbl.PutUser.
我知道对一些人来说这只是小菜一碟。我们可以使用MySQL特有的
IF()
函数
SELECT COUNT(DISTINCT IF(pu.app_id=1,pu.field_id,NULL)) AS `With Reco`
FROM mytable pu
或等效的、更符合ANSI标准的CASE
表达式
SELECT COUNT(DISTINCT CASE WHEN pu.app_id=1 THEN pu.field_id END)
要在我们要测试的条件不满足时返回NULL,否则返回表达式(field\u id
),我们需要获得满足条件时的不同值计数。然后,我们可以将表达式包装为COUNT(DISTINCT)
aggregate
对于测试,删除计数(不同的)聚合,并返回单个行
SELECT pu.app_id
, pu.field_id
, IF(pu.app_id=1,pu.field_id,NULL) AS foo
FROM mytable pu
ORDER BY ...
LIMIT 80
这是我对你所问问题的最好理解
app_id field_id foo
------ -------- -----
1 sam sam
0 sam NULL
1 sam sam
2 bob NULL
NULL bugs NULL
如果这不是你要问的,考虑提供一些样本数据,以及你的查询的预期输出。
我想你应该用样本数据和期望的结果来问另一个问题。样本数据和预期输出会更好地说明你所要达到的目标。完美,正是我所期待的。