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不应显示在临时表中。
奖励:有加速查询的明显方法吗?
显示0到29行(总计30行,查询耗时0.2904秒)
答案 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
的列,您在查询中已对其进行了别名t
。 t.*
会显示在您的选择列列表中,因此count
表格中的searches
会被拉入。第二个count
会出现在您的汇总列表中。