Count(t.id)AS计数连接导致两个`count`列?

时间:2016-12-07 18:34:13

标签: mysql

Count(t.id) AS count on join导致两列名为count,但第一列全部为0.
空列导致重复错误的原因是什么?

SELECT t . * , COUNT(t.id) AS count
FROM (
SELECT  `id` ,  `date` 
FROM  `searches` 
WHERE  `date` > '2016-12-06'
ORDER BY `date` DESC
LIMIT 0 , 10000
) q
JOIN  `searches` t ON t.id = q.id
GROUP BY  `query` 
ORDER BY  `count` DESC
LIMIT 0 , 30

图像显示计数列,所有0' s不应显示在临时表中。

count column with all 0's should not be showing up in temp table.

奖励:有加速查询的明显方法吗?

显示0到29行(总计30行,查询耗时0.2904秒)

2 个答案:

答案 0 :(得分:1)

如果您的第一行有plan([on(a,1), on(b,a), on(c,b), on(d,c), on(e,d), on(f,e), on(g,f), clear(g), clear(2), clear(3)], [clear(1), on(a,2), on(b,a), on(c,b), on(d,c), on(e,d), on(f,e), on(g,f), clear(g), clear(3)], P). ~ ~ g g f f e e d ---> d c c b b a ~ ~ ~ ~ a ~ ~ _ _ _ _ _ _ _ _ 1 2 3 4 1 2 3 4 ,那么您将从表中提取每一列。这将包括计数列。然后你计算一个名为count的计数。这就是为什么你有两个计数列。表中的count列可能已插入所有零。

如果您不希望列全部为零,则必须使查询看起来像这样:

t.*

答案 1 :(得分:1)

您的count表格中有一列名为searches的列,您在查询中已对其进行了别名tt.*会显示在您的选择列列表中,因此count表格中的searches会被拉入。第二个count会出现在您的汇总列表中。