我是全新的和我目前的工作我看到下面的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;
对不起,如果问题很简单的话!
1条答案
按热度按时间nhaq1z211#
COUNT(1)
是聚合的结果(GROUP BY
). 它用于这个
SELECT
要显示的子句,在
HAVING
限制结果和在
ORDER BY
用于排序的子句。这不是三种不同的计数。所以不管你是否给它一个别名。
(旁注:大多数dbms甚至不允许
SELECT
中使用的子句HAVING
,作为HAVING
应该发生在SELECT
.)