Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / составить запрос / 9 сообщений из 9, страница 1 из 1
23.12.2013, 12:43:16
    #38509833
drasute
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
составить запрос
Привет.

Есть таблица pages

в которой есть поля, скажем, url и content , то есть адрес и содержание

есть страницы, у которых один и тот же адрес, но разые якоря или запросные строки, например:
http://www.example.com/main.php?id=345
http://www.example.com/main.php?id=677
http://www.example.com/main.php?id=7453


или:
http://www.example.com/index.php#book
http://www.example.com/index.php#ololo
http://www.example.com/index.php#drasute


У таких страниц совпадает значение поля content .

Подскажите, можно ли составить запрос или процедуру удаления всех таких страниц (кроме одной)
...
Рейтинг: 0 / 0
23.12.2013, 13:04:43
    #38509868
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
составить запрос
Можно. Составляй.

PS. Хочешь спросить "как" - чётко и однозначно опиши, как отличить ту запись, которая не удаляется.
...
Рейтинг: 0 / 0
23.12.2013, 13:10:17
    #38509875
drasute
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
составить запрос
Akina, можно любую из них, контент же одинаковый у всех

Но идеальным вариантом, конечно, было бы оставлять запись вообще без якоря или запросной строки.
То есть, для следующего набора страниц с одинаковым содержанием
http://www.example.com/index.php
http://www.example.com/index.php#book
http://www.example.com/index.php#ololo
http://www.example.com/index.php#drasute


Неплохо бы оставить страницу только http://www.example.com/index.php
...
Рейтинг: 0 / 0
23.12.2013, 13:11:16
    #38509876
drasute
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
составить запрос
конечно, если такая имеется
если такой нет, можно оставит любую из оставшихся
...
Рейтинг: 0 / 0
23.12.2013, 13:22:05
    #38509899
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
составить запрос
Всё это можно свести к двум(!) словам - "самую короткую"
...
Рейтинг: 0 / 0
23.12.2013, 13:22:34
    #38509900
drasute
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
составить запрос
действительно )
...
Рейтинг: 0 / 0
23.12.2013, 13:31:30
    #38509914
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
составить запрос
drasute ,

Наверное, есть 2 варианта решения:
1. по спецсимволам
- найти в адресе положение спецсимвола (?, #)
- если найден, взять часть адреса до него, иначе адрес целиком
- удалить все строки, подходящие по шаблону 'начало адреса'+'%', кроме строки с минимальным значением адреса

2. по общей части адреса максимальной длины
- для каждой строки найти максимальную длину начала адреса, при которой по шаблону подойдет больше 1 строки
- удалить все строки, подходящие по шаблону 'начало адреса'+'%', кроме строки с минимальным значением адреса

Или, может быть, вы спрашивали про какой-то другой вариант?
...
Рейтинг: 0 / 0
23.12.2013, 13:54:41
    #38509936
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
составить запрос
Формально типа
Код: sql
1.
2.
3.
4.
5.
delete from pages
where (url, content) not in
(select min(url), content
from pages
group by content)


Однако на более-менее приличной таблице сервер, наверное, ляжет и сдохнет.
...
Рейтинг: 0 / 0
23.12.2013, 13:57:28
    #38509941
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
составить запрос
Я бы пошёл таким путём:
Создал бы новую таблицу - но с уникальным индексом по URL, И влил бы в неё данные, отрезая от URL параметры и якоря, и игнорируя ошибки. А потом положил бы её на место исходной (как вариант, truncate исходной и копирование почищенных данных).
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / составить запрос / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]