Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Удалить повторяющиеся записи

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Удаление повторяющихся записей с сохранением оригиналов
Tatyanko_O
Отправлено: 26 Апреля, 2012 - 15:39:31
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




Добрый день!
Помогите, пожалуйста, разобраться. Информации по нахождению повторяющихся записей в таблице достаточно много.
Предположим, у меня есть таблица tbl_my следующего содержания:
st1| st2| st3| st4
51|rus|634|gg
23|rus|535|pp
51|rus|634|gg
71|dor|231|mm
Ищем повторяющиеся (у меня поле st3 не должно повторяться):
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT st3, COUNT( * )
  3. FROM tbl_my
  4. GROUP BY st3
  5. HAVING COUNT( * ) >1
  6. ORDER BY COUNT( * )
  7.  

Результат этого запроса:
st3|count(*)
634|2

Вопрос в следующем, как мне удалить повторяющуюся строку, сохранив оригинал.
В результате моя таблица tbl_my должна выглядеть так:
st1| st2| st3| st4
51|rus|634|gg
23|rus|535|pp
71|dor|231|mm

Заранее благодарю.
 
 Top
OrmaJever Модератор
Отправлено: 26 Апреля, 2012 - 15:50:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)






-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Tatyanko_O
Отправлено: 30 Апреля, 2012 - 18:45:16
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




А можно еще вопрос, как сджоинить таблицы, используя DISTINCT? Ну, например, первая таблица та же:
st1| st2| st3| st4
51|rus|634|gg
23|rus|535|pp
51|rus|634|gg
71|dor|231|mm
Вторая:
сt1|ct2
634|blabla
738|blablabbb
634|blabla
535|upsups
Если я их собираю запросом:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT t.st1, t.st2, t.st3, t.st4, u.ct1, u.ct2
  2. FROM `tbl_test1` t
  3. LEFT JOIN `tbl_test2` u ON t.st3 = u.ct1

То получаю результат:
st1 st2 st3 st4 ct1 ct2
51 rus 634 gg 634 blabla
51 rus 634 gg 634 blabla
23 rus 535 pp 535 upsups
51 rus 634 gg 634 blabla
51 rus 634 gg 634 blabla
71 dor 231 mm NULL NULL
Мне же нужно:
st1 st2 st3 st4 ct1 ct2
51 rus 634 gg 634 blabla
23 rus 535 pp 535 upsups
51 rus 634 gg 634 blabla
71 dor 231 mm NULL NULL
Простите, за столь объемное сообщение, просто хотела максимально конкретизировать проблему. Исходные таблицы оптимизировать изначально не получится, приходится парсить их из 1Ски.
Надеюсь на ваш опыт. Спасибо заранее.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB