2016-07-18 5 views
-1

Я хочу использовать логику, похожую на «как» в группе.Использование в группе MySQL

Например, данные будут:

John1 
John2 
John3 
Steve1 
Steve2 

Я хочу, чтобы выход, как:

John 3 

Я искал о решениях, но я со статическим текстом. Я буду передавать значение параметра динамически в разделе «having». (например, здесь я пройду «Джон»).

Может ли кто-нибудь мне помочь?

+0

В O/P 'Джон 3', 3 это число появления' John'? – Arulkumar

+0

есть. 3 - это число префиксов «Джон». –

+0

Можете ли вы предоставить нам больше информации о вашей таблице и данных? – Philipp

ответ

0

Если вы хотите найти что-то, что является LIKE Джон, то вы используете

SELECT yourColumn 
FROM yourTable 
WHERE yourColumn LIKE '%John%'; 

То есть способ использовать SQL.

Если вы хотите группировать свои данные, вы можете группировать их после фильтрации через WHERE.

SELECT yourColumn, SUM(aggregatedColumn) 
FROM yourTable 
WHERE yourColumn LIKE '%John%' 
GROUP BY yourColumn; 

И после этого, вы можете использовать HAVING для фильтрации по некоторым aggragate.

SELECT yourColumn, SUM(aggregatedColumn) 
FROM yourTable 
WHERE yourColumn LIKE '%John%' 
GROUP BY yourColumn 
HAVING SUM(aggregatedColumn) > 12; 

(я думаю) Вы ищете запрос, как это:

SELECT yourColumn, MAX(occurrences) 
FROM yourTable 
WHERE yourColumn LIKE '%John%' 
GROUP BY yourColumn; 
0

Если предположить, что ваши данные следующим образом:

yourtable:

yourfield 
John1 
John2 
John3 
Steve1 
Steve2 

Тогда вы могли бы используйте COUNT и GROUP BY в некотором роде:

SELECT 
Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(yourfield,'9',''),'8',''),'7',''),'6',''),'5',''),'4',''),'3',''),'2',''),'1',''),'0','') AS NAME, 
COUNT(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(yourfield,'9',''),'8',''),'7',''),'6',''),'5',''),'4',''),'3',''),'2',''),'1',''),'0','')) AS NAME_COUNT 
FROM yourtable 
GROUP BY Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(yourfield,'9',''),'8',''),'7',''),'6',''),'5',''),'4',''),'3',''),'2',''),'1',''),'0','') 

Выход:

NAME NAME_COUNT 
John 3 
Steve 2 

SQL Скрипки: http://sqlfiddle.com/#!9/64506f/1/0

С LIKE:

SELECT 
Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(yourfield,'9',''),'8',''),'7',''),'6',''),'5',''),'4',''),'3',''),'2',''),'1',''),'0','') AS NAME, 
COUNT(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(yourfield,'9',''),'8',''),'7',''),'6',''),'5',''),'4',''),'3',''),'2',''),'1',''),'0','')) AS NAME_COUNT 
FROM yourtable 
WHERE yourfield LIKE '%john%' 
GROUP BY Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(yourfield,'9',''),'8',''),'7',''),'6',''),'5',''),'4',''),'3',''),'2',''),'1',''),'0','') 
Смежные вопросы