Создание групп/сегментов в Mysql

У меня есть таблица типа:

| Page                         | Clicks |
| ---------------------------- | ------ |
| example.com/blog/guide-a/    | 3000   |
| example.com/blog/guide-b/    | 1500   |
| example.com/cities/new-york/ | 800    |
| example.com/cities/berlin/   | 600    |
| example.com/cities/london/   | 400    |
| example.com/country/germany/ | 300    |
| example.com/country/austria/ | 500    |

Теперь мне нужен столбец под названием «подпапка». Это должно выглядеть так:

| Page                         | Clicks | Subfolder |
| ---------------------------- | ------ | --------- |
| example.com/blog/guide-a/    | 3000   | blog      |
| example.com/blog/guide-b/    | 1500   | blog      |
| example.com/cities/new-york/ | 800    | cities    |
| example.com/cities/berlin/   | 600    | cities    |
| example.com/cities/london/   | 400    | cities    |
| example.com/country/germany/ | 300    | country   |
| example.com/country/austria/ | 500    | country   |

Любые идеи?

dev.mysql.com/doc/refman/8.0/en/…
P.Salmon 19.03.2022 09:10
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
1
18
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сгенерировать этот Контент с помощью SUBSTR_INDEX

Образец

MariaDB [test]> SELECT SUBSTRING_INDEX( SUBSTRING_INDEX('example.com/blog/guide-a/', '/', 2) , '/', -1);
+----------------------------------------------------------------------------------+
| SUBSTRING_INDEX( SUBSTRING_INDEX('example.com/blog/guide-a/', '/', 2) , '/', -1) |
+----------------------------------------------------------------------------------+
| blog                                                                             |
+----------------------------------------------------------------------------------+
1 row in set (0.000 sec)

Или вы создаете виртуальный постоянный столбец. Он автоматически заполнит новый столбец. Этот образец предназначен для MariaDB. В MySQL синтаксис немного отличается.

Образец

MariaDB [test]> CREATE TABLE `mysubfolder` (
    ->   `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    ->   `Page` VARCHAR(64) DEFAULT NULL,
    ->   `Clicks` INT(11) DEFAULT NULL,
    ->   `Subfolder` VARCHAR(64) AS ( SUBSTRING_INDEX( SUBSTRING_INDEX(Page, '/', 2) , '/', -1) ) PERSISTENT,
    ->   PRIMARY KEY (`id`),
    ->   KEY (Subfolder)
    -> ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (0.033 sec)

MariaDB [test]> INSERT INTO `mysubfolder` (`id`, `Page`, `Clicks`)
    -> VALUES
    -> (1, 'example.com/cities/new-york/', 1234 );
Query OK, 1 row affected (0.007 sec)

MariaDB [test]> SELECT * FROM mysubfolder;
+----+------------------------------+--------+-----------+
| id | Page                         | Clicks | Subfolder |
+----+------------------------------+--------+-----------+
|  1 | example.com/cities/new-york/ |   1234 | cities    |
+----+------------------------------+--------+-----------+
1 row in set (0.001 sec)

MariaDB [test]> 

Спасибо! Я также обнаружил, что метод Case When... отлично работает и для меня.

jwd-analyst 19.03.2022 14:36

Другие вопросы по теме