2012-04-14 2 views
2

a noob вопрос здесь!Как подсчитать строки по первой букве?

Я написал этот вопрос, но «группа by» очень глупа ... так, как я могу исправить это?

SELECT 
    COUNT(*) AS total, 
    'x' as test 
    FROM 
contents 
    WHERE name LIKE 'C%' 
GROUP BY 
    test 
ORDER BY id ASC 

различные решения и информация о спектаклях приветствуются (возможно, с помощью DISTINCT?)

заранее спасибо!

+0

это в php? – hjpotter92

+1

yup, отредактирован! LIKE - это единственная буква – skyline26

+0

, каков выход, поступающий как? – hjpotter92

ответ

12

Это должно выполнять, а также любой другой вариант -

SELECT 
    LEFT(name, 1) AS first_letter, 
    COUNT(*) AS total 
FROM contents 
GROUP BY first_letter 

Если вы хотите, чтобы выполнить этот запрос для одного письма в то время, вы можете добавить ИНЕК и уронить GROUP BY -

SELECT COUNT(*) AS total 
FROM contents 
WHERE name LIKE 'a%' 
+0

Я хочу попытаться сбросить группу, потому что я уже знаю письмо ... есть способ сгруппировать все строки без конкретной концепции? – skyline26

+0

Просто счет (*), как и во втором примере – nnichols

+1

Мне нравится ваш первый ответ. Он предлагает извлечь данные в сам оператор select, чтобы вы могли применить группу по условию. – aartist

0

должно дать вам все, что в случае, если вы хотите

SELECT 
    COUNT(*) AS total, 
    test 
FROM 
(SELECT substring(name,1,1) as test 
from contents) t 
GROUP BY test 
1

Давайте проанализируем ваш запрос:

SELECT 
    COUNT(*) AS total, 
    'x' as test  <-- Why? 
    FROM   <-- Bad formatting. 
contents 
    WHERE name LIKE 'C%' 
GROUP BY 
    test   <-- Removing 'x' and the whole GROUP BY has the same effect. 
ORDER BY id ASC  <-- The result only contains one row - nothing to sort. 

Таким образом, запрос, который возвращает одну строку с одним полем, содержащий число строк, у которых name начинается с «C» будет выглядеть следующим образом:

SELECT COUNT(*) 
FROM contents 
WHERE name LIKE 'C%' 

Имея индекс которого передний крайname обеспечит хорошую производительность. Чтобы понять, почему, взгляните на Anatomy of an SQL Index.

Смежные вопросы