mysql group by count(1)和having by

mbjcgjjk  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(495)

我是全新的和我目前的工作我看到下面的sql语句。

SELECT t.name store,p.id, p.name,count(1)
FROM regular_shippings sh
JOIN
   products p ON matching columns.
ANOTHER JOINS
WHERE criteria
AND anotherCriteria
GROUP BY p.id
HAVING count(1) > 0
ORDER BY t.name,count(1) desc;

我的第一印象是把唱片数进去

the select

同样在

having by

同样在

order by

对我来说,影响性能的最好是使用别名。但这种说法正确吗?或者是不是只有一次?或者引擎足够聪明,可以识别它并在后面的调用中替换先前的count(1)值?
我的意思是这个查询会执行得更好?

SELECT t.name store,p.id, p.name,count(1)c
FROM regular_shippings sh
JOIN
   products p ON matching columns.
ANOTHER JOINS
WHERE criteria
AND anotherCriteria
GROUP BY p.id
HAVING c>0
ORDER BY t.name,c desc;

对不起,如果问题很简单的话!

nhaq1z21

nhaq1z211#

COUNT(1) 是聚合的结果( GROUP BY ). 它用于
这个 SELECT 要显示的子句,
HAVING 限制结果和
ORDER BY 用于排序的子句。
这不是三种不同的计数。所以不管你是否给它一个别名。
(旁注:大多数dbms甚至不允许 SELECT 中使用的子句 HAVING ,作为 HAVING 应该发生在 SELECT .)

相关问题