GROUP BY по части поля. Возможно ли?

127
29 июня 2019, 06:50
++++++++++++++++++++++++++++++
+ id + title           + num +
++++++++++++++++++++++++++++++
+  1 + name slim       +   5 +
+  2 + name frog       +   6 +
+  3 + name frog       +   2 +
+  4 + nick one        +   8 +
+  5 + nick two        +   3 +
+  6 + nick strong man +   7 +
++++++++++++++++++++++++++++++

Хочу командой GROUP BY сделать группировку, по полю title, но по значению ДО первого пробела

SELECT *
FROM `my_table`
WHERE 1
GROUP BY команда_которую_не_знаю(`title`)
ORDER BY `num` ASC

На выходе охота получить что то типа

++++++++++++++++++++
+ id + title + num +
++++++++++++++++++++
+  3 + name  +   2 +
+  5 + nick  +   3 +
++++++++++++++++++++

Такое возможно? Если да, подскажите как написать запрос

p.s. в данный момент делаю запрос ко всей таблице, и уже после запроса обрабатываю данные

благодаря мудрым советам @Akina - можно сделать запрос

SELECT `id`, SUBSTRING_INDEX(`title`, ' ', 1), `num`
FROM `my_table`
WHERE 1
GROUP BY `title`
ORDER BY `num` ASC

но команда GROUP BY перестает работать

++++++++++++++++++++
+ id + title + num +
++++++++++++++++++++
+  3 + name  +   2 +
+  1 + name  +   5 +
+  2 + name  +   6 +
+  5 + nick  +   3 +
+  6 + nick  +   7 +
+  4 + nick  +   8 +
++++++++++++++++++++
Answer 1

Непонятно, для чего в выходном наборе поле id. И тем более непонятно, что должно выводиться, если одному и тому же (судя по ORDER BY - минимальному) значению num соответствует несколько разных id...

Додумывая задачу, считаю, что наиболее верным будет следующий запрос:

SELECT SUBSTRING_INDEX(`title`, ' ', 1) title, min(`num`) num
FROM `my_table`
-- WHERE 1
GROUP BY SUBSTRING_INDEX(`title`, ' ', 1)
ORDER BY `num` ASC

Если всё же id необходим, то запрос будет таким:

SELECT MIN(t1.id) id, t2.title, t2.num
FROM my_table t1
JOIN (SELECT SUBSTRING_INDEX(`title`, ' ', 1) title, min(`num`) num
      FROM `my_table`
      GROUP BY SUBSTRING_INDEX(`title`, ' ', 1)) t2
   ON SUBSTRING_INDEX(t1.title, ' ', 1) = t2.title
  AND t1.num = t2.num
GROUP BY t2.title, t2.num
ORDER BY num

fiddle

READ ALSO
Ошибка при попытке входа в phpMyAdmin

Ошибка при попытке входа в phpMyAdmin

Открываю http://localhost/Tools/phpMyAdmin/

140
Скроллинг по секциям [закрыт]

Скроллинг по секциям [закрыт]

Есть сайт на котором должен быть скролл по секциям, наподобие вертикального слайдера и если контент в секции больше высоты экрана он должен...

116
Как отладить C# core консольное приложение?

Как отладить C# core консольное приложение?

Тесты показали запаздывание программы, решил воспользоваться профайлингомСперва пробовал встроенный в 2017 студию

132
Получить данные из active directory

Получить данные из active directory

есть самая обычная WinForms(С#) на которой есть два TextBox или lablesв одну форму нужно выводить Имя пользователя компьютера во вторую его номер телефона...

130