[MySql] Unikalne zapytanie |
[MySql] Unikalne zapytanie |
19.11.2009, 20:43:04
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 14.08.2007 Ostrzeżenie: (0%) |
Witam,
posiadam w tabeli 3 kolumny, primary KEY czyli id, jakas nazwe i inną wartosc (powtarzającą się) powiedzmy id2. Chcę wyciągnąć losowo 3 rekordy, każdy o róznym id2. Jak tego dokonac? Bawilem się z DISTINCT ale to funkcja ta pobiera wszystkie niepowtarzające się mozliwosci. Mozna by pobrac jedynie tak: SELECT DISTINCT id2 FROM blabla ORDER by rand() LIMIT 3; Ale wtedy nie bede mial pola nazwa które jest mi niezbedne. Raczej w Mysql nie ma funkcji UNIQUE tak jak np w Oracle. Może to rozwiązac jakims podpzapytaniem? ma ktos pomysł? |
|
|
19.11.2009, 21:15:29
Post
#2
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) |
Czy ja dobrze zrozumialem? - to powinno zadzialac;) -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
19.11.2009, 21:35:11
Post
#3
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 14.08.2007 Ostrzeżenie: (0%) |
Własnie o tym pisałem ze to nie zadziała bo tutaj slowo DISTINCT wybiera nam wszystkie mozliwosci niepowtarzających się rekordów. Jednak ja chcę aby tlyko id2 było niepowtarzające się. To zapytanie, które podałes wyswietli nam tak naprawde wszystkie rekordy(przy załozeniu id jest keyem).
|
|
|
19.11.2009, 21:48:34
Post
#4
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) |
DISTINCT ON (nazwa_kolumny)
@edit mysql sux Ten post edytował cojack 20.11.2009, 03:25:06 -------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
19.11.2009, 22:24:13
Post
#5
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) |
Wiesz , u mnie to dziala. Wyswietla unikalne (id2) 3 losowe rekordy. Sprawdz i podaj jaki wynik Ci zwraca i opisz czemu on nie spelnia Twojego kryterium
SELECT DISTINCT id2, nazwa, id FROM blabla ORDER BY rand() LIMIT 3; mozesz tez i tak SELECT id2, nazwa, id FROM blabla GROUP BY ID2 ORDER BY rand() LIMIT 3; -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
19.11.2009, 22:32:48
Post
#6
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 14.08.2007 Ostrzeżenie: (0%) |
DISTINCT ON (nazwa_kolumny) Mam bląd przy takim wyrazeniu. Czy takie cos istnieje w Mysql? A nie przypadkiem tylko w PostgreSQL? Wiesz , u mnie to dziala. Wyswietla unikalne (id2) 3 losowe rekordy. Sprawdz i podaj jaki wynik Ci zwraca i opisz czemu on nie spelnia Twojego kryterium SELECT DISTINCT id2, nazwa, id FROM blabla ORDER BY rand() LIMIT 3; Dodaj sobie do tabeli 15 rekordów w których po 5 rekordów mają te same id2. Kilka razy wykonaj to zapytanie. ID2 sie powtórzy. mozesz tez i tak SELECT id2, nazwa, id FROM blabla GROUP BY ID2 ORDER BY rand() LIMIT 3; To juz działa nieźle. Podaje 3 rekordy o róznym id2 jednak za kazdym razem wyswietla te same 3 rekordy, a losuje tylko ich kolejnosc... |
|
|
20.11.2009, 09:18:21
Post
#7
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) |
Obydwa zapytania robia to samo.
Podaj strukture bazy/tabeli i przykladowe dane. U mnie dzialaja obydwa tak samo i wyswietlaja unikalne rekordy ID2 Ten post edytował maly_swd 20.11.2009, 09:18:36 -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
20.11.2009, 14:23:35
Post
#8
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 14.08.2007 Ostrzeżenie: (0%) |
Wrzucam przykład bazy:
http://pastie.org/707526 Oraz mój screen: Jak widac siteid czyli id2 (tak wczesniej to nazywalismy) sie powtarza. Ten post edytował jerry89 20.11.2009, 14:24:22 |
|
|
20.11.2009, 15:36:51
Post
#9
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) |
hmm faktycznie z tym distinct, nie wiem co ja wczoraj sprawdzalem;)
-------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
Wersja Lo-Fi | Aktualny czas: 13.06.2024 - 05:04 |