Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите сгруппировать / 10 сообщений из 10, страница 1 из 1
03.09.2017, 17:04
    #39514716
Zenia
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сгруппировать
Такая ситуация, есть таблица со связями товаров.
product_id related_id15311532153115331532153115321533153315311533153270641543168016791680169116911680169116791679168016791691......

можно ли без приминения сторонней программы, только MySql запросами, привести таблицу к такому результату:

product_id related_id1531153215311533706415431680167916801691......

то есть надо удалить дублирующиеся связи.
...
Рейтинг: 0 / 0
03.09.2017, 19:10
    #39514734
retvizan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сгруппировать
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
create table test(a int, b int);

insert into test values(1,2),(1,3),(2,1),(2,5),(3,1),(3,4);

select * from test;
+------+------+
| a    | b    |
+------+------+
|    1 |    2 |
|    1 |    3 |
|    2 |    1 |
|    2 |    5 |
|    3 |    1 |
|    3 |    4 |
+------+------+

delete test from test join (select t2.c3 from
(select if(a<=b,a,b) c1, if(a<=b,b,a) c2, concat(a,'_',b) c3 from test) t1 join
(select if(a<=b,a,b) c1, if(a<=b,b,a) c2, concat(a,'_',b) c3 from test) t2
on t1.c1=t2.c1 and t1.c2=t2.c2 and t1.c3<t2.c3) t on concat(a,'_',b)=t.c3;

select * from test;
+------+------+
| a    | b    |
+------+------+
|    1 |    2 |
|    1 |    3 |
|    2 |    5 |
|    3 |    4 |
+------+------+
...
Рейтинг: 0 / 0
03.09.2017, 22:44
    #39514799
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сгруппировать
Код: sql
1.
2.
3.
4.
5.
6.
7.
DELETE t1.*
FROM test t1
WHERE t1.a>t1.b
  AND EXISTS (SELECT 1
              FROM test t2
              WHERE t1.a=t2.b 
                AND t1.b=t2.a)
...
Рейтинг: 0 / 0
04.09.2017, 10:40
    #39514897
Zenia
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сгруппировать
Спасибо всем.
Такая специфическая ситуация, в таблице 90000 записей, очень долго считает (подождал около 10мин и оборвал).
Лучше щас напишу на пехепе функцию и все дела.
А кому интересно, выложу дамп таблицы.
...
Рейтинг: 0 / 0
04.09.2017, 11:31
    #39514931
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сгруппировать
ZeniaСпасибо всем.
Такая специфическая ситуация, в таблице 90000 записей, очень долго считает (подождал около 10мин и оборвал).
Лучше щас напишу на пехепе функцию и все дела.
А кому интересно, выложу дамп таблицы.

Надо индекс чтобы был на эти два поля, a и b.

Запрос по сути медленный, O(N*N) , с индексом будет O(NlogN)
...
Рейтинг: 0 / 0
04.09.2017, 12:13
    #39514977
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сгруппировать
А если первым шагом проабдейтить таблицу, приведя в в состояние product_id < related_id.
Ну а затем убить дубли
...
Рейтинг: 0 / 0
04.09.2017, 13:17
    #39515026
Павел Воронцов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сгруппировать
Код: sql
1.
select distinct if(a<=b,a,b) a, if(a<=b,b,a) b from tbl

?
...
Рейтинг: 0 / 0
04.09.2017, 13:19
    #39515028
Павел Воронцов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сгруппировать
а, удалить. Простите, невнимательно прочитал.
...
Рейтинг: 0 / 0
04.09.2017, 14:27
    #39515103
Zenia
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сгруппировать
Павел Воронцов
Код: sql
1.
select distinct if(a<=b,a,b) a, if(a<=b,b,a) b from tbl

?

Вооо, Супер... Большое спасибо, отработалось за долю секунды.
...
Рейтинг: 0 / 0
04.09.2017, 16:23
    #39515197
Помогите сгруппировать
Павел Воронцов,

Оригинальная замена встроенным least и greatest
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите сгруппировать / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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