Dzień dobry.
Próbuję napisać zapytanie, które zwróci mi rekordy pewnej tabeli, z pominięciem powtarzających się rekordów z dwoma takimi samymi kolumnami. Tabela nazywa się forum_helpmod
. Ma takie pola:
help_id -- indeks
post_id -- nie może się powtarzać w parze, z takimi samymi help_from
topic_id
help_time
help_from -- nie może się powtarzać w parze z takimi samymi post_id
help_to
help_reason
Czyli np.
help_id | post_id | topic_id | help_time | help_from | help_to | help_reason |
---|---|---|---|---|---|---|
1 | 1 | 1 | 1234 | 2 | 3 | 'abc' |
2 | 1 | 2 | 1444 | 2 | 6 | 'abcde' |
3 | 2 | 1 | 1554 | 2 | 3 | 'abc' |
4 | 3 | 1 | 1234 | 2 | 3 | 'abcabc' |
Chodzi teraz o to, że chcę, aby select wyeliminował mi jeden z dwóch pierwszych rekordów (jako, że mają te same post_id
w parze z tymi samymi help_from
) Nie ma dla mnie znaczenia który zostanie wyeliminowany, którykolwiek. Chciałbym aby select zwrócił mi tabelę ze wszystkimi rekordami, poza tymi, o których wspomniałem
Na razie sprawdziłem, czy są takie rekordy, przy pomocy zapytania:
SELECT post_id, help_from, count(*) ccc FROM forum_helpmod
GROUP BY post_id, help_from
HAVING ccc > 1
I są.
Tylko nie wiem, jak dobrać się do rekordów całej tabeli, bez tych nadmiarowych.
Będę bardzo wdzięczny za pomoc. Bardzo dziękuję.
Michał
Post Scriptum
Dodam jeszcze po co mi to potrzebne. Mam tabelę forum_thanks
z dwoma kluczami głównymi i próbuję przekopiować dane z helpmod
do thanks
Mam takie zapytanie:
INSERT INTO forum_thanks (post_id, user_id, poster_id, topic_id, forum_id, thanks_time)
SELECT h.post_id, h.help_from, h.help_to, h.topic_id, p.forum_id, h.help_time
FROM forum_helpmod h
JOIN forum_posts p ON p.post_id = h.post_id
Jednak wyrzuca mi ono błąd, gdyż post_id
i user_id
są kluczami głównymi, a SELECT zwraca rekordy, o których pisałem wcześniej (z powtarzającymi się parami kolumn). Więc chciałbym pominąć te powtarzające się i zostawić tylko jedną z tych powtarzających + unikatowe.
Jeszcze raz dziękuję za pomoc i wsparcie.
Michał