我的回答。你救了我的命,其他所有的aswer都在MySQL中返回多行。非常感谢much@Abner很高兴这在8年后仍然有用:)@MajidLaissi是的,它把我的查询时间从一分钟改为不到一秒我创建的一个查询使…-该查询在哪里?如何将where calus
我的回答。你救了我的命,其他所有的aswer都在MySQL中返回多行。非常感谢much@Abner很高兴这在8年后仍然有用:)@MajidLaissi是的,它把我的查询时间从一分钟改为不到一秒我创建的一个查询使…-该查询在哪里?如何将where calus,mysql,sql,join,count,group-by,Mysql,Sql,Join,Count,Group By,我的回答。你救了我的命,其他所有的aswer都在MySQL中返回多行。非常感谢much@Abner很高兴这在8年后仍然有用:)@MajidLaissi是的,它把我的查询时间从一分钟改为不到一秒我创建的一个查询使…-该查询在哪里?如何将where caluse添加到所有表在该查询中确实需要“group by distributor\u id”?如果没有该查询,它也可以工作well@user1451111原来的问题得到了答案,所以答案取决于问题本身 SELECT distributor_id, C
我的回答。你救了我的命,其他所有的aswer都在MySQL中返回多行。非常感谢much@Abner很高兴这在8年后仍然有用:)@MajidLaissi是的,它把我的查询时间从一分钟改为不到一秒<代码>我创建的一个查询使…-该查询在哪里?如何将where caluse添加到所有表在该查询中确实需要“group by distributor\u id”?如果没有该查询,它也可以工作well@user1451111原来的问题得到了答案,所以答案取决于问题本身
SELECT distributor_id,
COUNT(*) AS TOTAL,
COUNT(*) WHERE level = 'exec',
COUNT(*) WHERE level = 'personal'
'SELECT distributor_id, COUNT(*)
GROUP BY distributor_id'
SELECT a.distributor_id,
(SELECT COUNT(*) FROM myTable WHERE level='personal' and distributor_id = a.distributor_id) as PersonalCount,
(SELECT COUNT(*) FROM myTable WHERE level='exec' and distributor_id = a.distributor_id) as ExecCount,
(SELECT COUNT(*) FROM myTable WHERE distributor_id = a.distributor_id) as TotalCount
FROM (SELECT DISTINCT distributor_id FROM myTable) a ;
SELECT distributor_id, COUNT() FROM ... UNION
SELECT COUNT() AS EXEC_COUNT FROM ... WHERE level = 'exec' UNION
SELECT COUNT(*) AS PERSONAL_COUNT FROM ... WHERE level = 'personal';
SELECT distributor_id, COUNT(*) FROM ... GROUP BY level;
SELECT
distributor_id,
COUNT(*) AS TOTAL,
COUNT(IF(level='exec',1,null)),
COUNT(IF(level='personal',1,null))
FROM sometable;
SELECT distributor_id,
count(*) AS total,
sum(case when level = 'exec' then 1 else 0 end) AS ExecCount,
sum(case when level = 'personal' then 1 else 0 end) AS PersonalCount
FROM yourtable
GROUP BY distributor_id
select distributor_id,
count(*) total,
sum(case when level = 'exec' then 1 else 0 end) ExecCount,
sum(case when level = 'personal' then 1 else 0 end) PersonalCount
from yourtable
group by distributor_id
SELECT a.distributor_id,
(SELECT COUNT(*) FROM myTable WHERE level='personal' and distributor_id = a.distributor_id) as PersonalCount,
(SELECT COUNT(*) FROM myTable WHERE level='exec' and distributor_id = a.distributor_id) as ExecCount,
(SELECT COUNT(*) FROM myTable WHERE distributor_id = a.distributor_id) as TotalCount
FROM myTable a ;
IF OBJECT_ID (N't1', N'U') IS NOT NULL
drop table t1
create table t1 (f1 int)
insert into t1 values (1)
insert into t1 values (1)
insert into t1 values (2)
insert into t1 values (2)
insert into t1 values (2)
insert into t1 values (3)
insert into t1 values (3)
insert into t1 values (3)
insert into t1 values (3)
insert into t1 values (4)
insert into t1 values (4)
insert into t1 values (4)
insert into t1 values (4)
insert into t1 values (4)
SELECT SUM(CASE WHEN f1 = 1 THEN 1 else 0 end),
SUM(CASE WHEN f1 = 2 THEN 1 else 0 end),
SUM(CASE WHEN f1 = 3 THEN 1 else 0 end),
SUM(CASE WHEN f1 = 4 THEN 1 else 0 end)
from t1
SELECT
(select COUNT(*) from t1 where f1 = 1),
(select COUNT(*) from t1 where f1 = 2),
(select COUNT(*) from t1 where f1 = 3),
(select COUNT(*) from t1 where f1 = 4)
Create clustered index t1f1 on t1(f1);
Update Statistics t1;
SELECT distributor_id,
COUNT(*) total,
SUM(level = 'exec') ExecCount,
SUM(level = 'personal') PersonalCount
FROM yourtable
GROUP BY distributor_id
select 'table1', count (*) from table1
union select 'table2', count (*) from table2
union select 'table3', count (*) from table3
union select 'table4', count (*) from table4
union select 'table5', count (*) from table5
union select 'table6', count (*) from table6
union select 'table7', count (*) from table7;
-------------------
| String | Count |
-------------------
| table1 | 123 |
| table2 | 234 |
| table3 | 345 |
| table4 | 456 |
| table5 | 567 |
-------------------
SELECT distributor_id,
COUNT(*) total,
SUM(case when level = 'exec' then 1 else 0 end) OVER() ExecCount,
SUM(case when level = 'personal' then 1 else 0 end) OVER () PersonalCount
FROM yourtable
GROUP BY distributor_id