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
Форумы портала PHP.SU :: Версия для печати :: Удалить повторяющиеся записи
Форумы портала PHP.SU » » Работа с СУБД » Удалить повторяющиеся записи

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

1. Tatyanko_O - 26 Апреля, 2012 - 15:39:31 - перейти к сообщению
Добрый день!
Помогите, пожалуйста, разобраться. Информации по нахождению повторяющихся записей в таблице достаточно много.
Предположим, у меня есть таблица 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

Заранее благодарю.
2. OrmaJever - 26 Апреля, 2012 - 15:50:03 - перейти к сообщению
3. Tatyanko_O - 30 Апреля, 2012 - 18:45:16 - перейти к сообщению
А можно еще вопрос, как сджоинить таблицы, используя 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Ски.
Надеюсь на ваш опыт. Спасибо заранее.

 

Powered by ExBB FM 1.0 RC1