Доброго времени суток!
Имеется таблица mysql с тремя столбцами: Sender, Recipient, Thing. Все типа INT. Sender & Recipient индексированы, первичного ключа нет.
Цель таблицы: одному Recipient от Sender присылается Thing.
Случилось так, что основное условие этой таблицы было нарушено php запросом: от одного Sender для другого Recipient может быть только одна запись.
Сейчас для некоторых Recipient от одних и тех же Sender есть несколько записей с разными Thing.
Вопрос: как из данной таблицы выбрать неуникальные записи, т.е. записи, Sender & Recipient которых совпадают (не между собой, а между записями). И оставить из них записи с самым большим Thing.
Буду очень благодарен за помощь!
FatCat
26.08.2014 - 18:28
Цитата (XELAD @ 26.08.2014 - 16:45) |
первичного ключа нет |
Это усложняет задачу.
ИМХО, проще пересобрать всю таблицу.
_____________
Бесплатному сыру в дырки не заглядывают...
Задумывалось, что от одного Sender может быть по одной записи для разных Recipient. Т.е Sender как первичный ключ не подходит, Recipient тоже - получатель мог быть один от разных отправителей, значит записей с одним и тем же Recipient - несколько.
Цитата |
пересобрать всю таблицу |
А можно чуть подробнее?
Как я понимаю, одним запросом SELECT абсолютно всё из данной таблицы, в другую пустую таблицу INSERT, если нет записи с такими Sender & Recipient, либо UPDATE, если Thing меньше предоставляемой.
Верно ли я мыслю, и сколько на это уйдёт времени, если записей 10к?
T1grOK
26.08.2014 - 19:30
Цитата (XELAD @ 26.08.2014 - 15:05) |
Задумывалось, что от одного Sender может быть по одной записи для разных Recipient. Т.е Sender как первичный ключ не подходит, Recipient тоже - получатель мог быть один от разных отправителей, значит записей с одним и тем же Recipient - несколько. |
А PRIMARY KEY на 2 поля не судьба?
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
T1grOK
26.08.2014 - 19:33
Цитата (XELAD @ 26.08.2014 - 13:45) |
как из данной таблицы выбрать неуникальные записи, т.е. записи, Sender & Recipient которых совпадают |
Наводка GROUP BY HAVING COUNT, да и через JOIN можно организовать собст-но.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Цитата |
PRIMARY KEY на 2 поля |
С данным методом не знаком. Как он работает?
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.