Skocz do zawartości
Chell

[MySQL] sortowanie naprzemienne

Rekomendowane odpowiedzi

siema,
mam taką tabelkę:
 

id|nazwa   |typ
--+--------+-------
1 |jabłko  |owoc
2 |śliwka  |owoc
3 |wiśnia  |owoc
4 |ziemniak|warzywo
5 |batat   |warzywo
6 |marchew |warzywo

chcę zrobić zapytanie, które wybierze mi naprzemiennie owoce i warzywa (także jabłko, ziemniak, śliwka, batat, wiśnia, marchew). są w ogóle takie cuda? (dodam, że owoc, warzywo to nie jedyne wartości, mogą być najróżniejsze - chciałbym je też brać pod uwagę)
w idealnym świecie dałoby się to zrealizować po ludzki w sqlalchemy :red_bandana:

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jedyne co mi wpadło do głowy, to zrobić zapytanie które zwraca co drugi rekord i wtedy union select z zapytaniem przeciwnym.

Ewentualnie zapytanie do którego doklejasz numer rzędu (nie id) i robisz jakiś concat zależnie od modulo i potem z tego kolejny select i posortować po tym concat. Ale ogólnie to będzie wolne, tak czy siak.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
1 minutę temu, gnysek napisał:

@Chell: https://stackoverflow.com/questions/53957524/mysql-how-to-sort-rows-to-appear-like-this-e-g-1-2-1-2

Generalnie szukałem po "a b a b sorting" oraz "alternate sorting" i jest parę propozycji.

oo, dokładnie o to chodziło. próbowałem szukać "order by alternately", ale jedyne sensownego co znalazłem to https://stackoverflow.com/questions/18862522/mysql-order-by-alternate-values, a to kobyła większa niż to jest tego warte. wieczorkiem zaimplementuję, dzięki!

  • Super (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

dobra, nie wytrzymałem i już zaimplementowałem, śmiga jak marzenie:

query = self._session.query(Summoner).filter(or_(
        Summoner.account_id == None,
        Summoner.modified_at < ttl
    )).order_by(
        over(
            func.row_number(),
            Summoner.region,
            (Summoner.rank_id, Summoner.region)
        ),
        Summoner.region
    )

dzięki!

  • Super (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×