Шпаргалка полезных методов MySQL

Небольшой набор приёмов MySQL, которые могут пригодиться в работе напрямую с базой данных.

Перенумеровать все строки в таблице

set @a = 0;
UPDATE `table_name` SET `id`= @a:=@a+1;

Замена подстрок в тексте

UPDATE `table_name` SET `column_name`= replace(column_name, 'substring', 'replacement');

Может понадобиться, например когда вы перенесли старый сайт на новую платформу, и нужно перепрописать новые пути ко всем картинкам в контенте.

Копирование таблицы

CREATE TABLE `new_table`
SELECT * FROM `old_table`;

или

CREATE TABLE `new_table` LIKE  `old_table`;
INSERT INTO `new_table`
(SELECT * FROM `old_table`);

Касаемо работы с внутренней структурой MODX

Поиск неиспользуемых шаблонов MODX

SELECT id,templatename FROM `modx_site_templates`
WHERE id NOT IN (SELECT template FROM `modx_site_content`)

Количество документов, в каждом шаблоне MODX

SELECT c.template, COUNT(c.id) as `Количество`,t.templatename FROM `modx_site_content` as c, modx_site_templates as t
WHERE c.template=t.id
GROUP BY c.template

Количество документов, в каждом шаблоне MODX, вариант 2, через LEFT JOIN

SELECT t.id,t.templatename,COUNT(t.id) as Количество
FROM `modx_site_templates` as t
LEFT JOIN modx_site_content as c
ON t.id=c.template
GROUP BY c.template