Największy z mniejszych |
Największy z mniejszych |
13.04.2002, 16:20:19
Post
#1
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 31.03.2002 Skąd: Toruń Ostrzeżenie: (0%) |
Mam tabelę o nazwie moja_tabela, w której między innymi znajduje się pole typu INT o nazwie moje_pole. W tabeli są zapisane jakieś dane, a w polu moje_pole są jakieś liczby (parami różne). Ponadto daną mam konkretną liczbę, powiedzmy 100.
Jak mogłoby wyglądać zapytanie, które zwróci rekord o największej wartości pola moje_pole mniejszej niż 100? Np. jeśli w tabeli moja_tabela w polu moje_pole znajdują się liczby 10, 412, 97, 211, 95, 432, 23, 103, 11, to ma zostać zwrócona liczba 97 (największa spośród liczb mniejszych od 100). Poniższe rozwiązanie: Kod SELECT * FROM moja_tabela WHERE moje_pole<100 ORDER BY moje_pole DESC LIMIT 1
nie satysfakcjonuje mnie czasowo, ponieważ sortowanie (ORDER BY) wydaje się być w tym przypadku nadużyciem. Jak sformułować zapytanie nie używające ORDER BY? -------------------- misiu | chór
"Zdeterminowany programista potrafi stworzyć fatalny kod w każdym języku" Allen Holub |
|
|
13.04.2002, 23:17:48
Post
#2
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 0 Dołączył: -- Skąd: W - WA -> GRO Ostrzeżenie: (0%) |
MySQL ma rozne przydatne funkcje, w tym matematyczne.
Sprobuj tego: Kod SELECT MAX(moje_pole) FROM moja_tabela
PS Polecam poczytac: http://www.mysql.com/doc/M/a/Mathematical_..._functions.html :-) |
|
|
14.04.2002, 09:57:35
Post
#3
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 31.03.2002 Skąd: Toruń Ostrzeżenie: (0%) |
Hehe, thx, ale mi chodzi o coś takiego:
Kod SELECT * FROM moja_tabela WHERE moje_pole IN (
SELECT MAX(moje_pole) FROM moja_tabela WHERE moje_pole<100 ); ale bez użycia subselektów, czyli bez użycia IN, bo moja wersja mysql tego nie obsługuje. -------------------- misiu | chór
"Zdeterminowany programista potrafi stworzyć fatalny kod w każdym języku" Allen Holub |
|
|
14.04.2002, 10:32:12
Post
#4
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 0 Dołączył: -- Skąd: W - WA -> GRO Ostrzeżenie: (0%) |
Teraz nie mam za bardzo czasu szukac rozwiazania, ale najprosciej bedzie to rozbic na dwa zapytania.
|
|
|
20.04.2002, 10:47:14
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 786 Pomógł: 0 Dołączył: 18.03.2002 Skąd: Wroclaw/Warszawa Ostrzeżenie: (0%) |
Cytat Poniższe rozwiązanie:
jesli moje_pole nie jest indexem to przykro mi ale ZTCP to jest to jedyna mozliwosc jednozapytaniowego rozwiazania.
Kod SELECT * FROM moja_tabela WHERE moje_pole<100 ORDER BY moje_pole DESC LIMIT 1
nie satysfakcjonuje mnie czasowo, ponieważ sortowanie (ORDER BY) wydaje się być w tym przypadku nadużyciem. -------------------- .. make web your home ..
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 06:26 |