Pobranie rekordu zawierającego maksymalną wartość w danej kolumnie

0

Do pobrania rekordu zawierającego maksymalną wartość używam:

SELECT *
FROM `moja_tabela` , 
(
	SELECT MAX( `kolumna5` ) AS maksik
	FROM `moja_tabela`
	GROUP BY `IMEI`
) AS tab
WHERE maksik = `kolumna5`

Jest możliwość przerobienia tego na jednego SELECTa(a dokładniej na jedno bez podzapytań)?

0
  1. Co to za SQL?
  2. Nie rób takich implicit joinów bo się to źle czyta. Zresztą w ogóle jaki jest wynik takiego złączenia? Po czym te tabele zostały złączone? Po tym polu "imei"?
    Bo zdajesz sobie sprawę że masz tu tak na prawdę 2 podzapytania, w tym jedno ukryte w joinie? Napisz co chciałeś osiągnąć, bo z tego co napisałeś trudno wywnioskować.
0

To zapytanie zwraca niby jeden rekord ?!

0

W uproszczeniu mam taką tabele:

Kolumna1 Kolumna5 IMEI ???
1 2 abc
5 3 abc
3 5 cba
2 6 cba TEN
6 7 abc TEN
8 3 abc
Jako ostatnią kolumnę zaznaczyłem jakie rekordy chcę uzyskać, czyli taką odpowiedz:
Kolumna1 Kolumna5 IMEI
---------------- ---------------- ----------------
2 6 cba
6 7 abc

Ale wydaje mi się to dziwne, żeby w SQL, a konkretniej korzystam z mySQL nie było takiego rozwiązania, ale znaleźć nie mogę.

0
select max(kolumna5) as kol5, imei from dupa group by imei

i jak chcesz coś więcej z tej tabeli to trzeba tak

select
  d1.kolumna1,
  d1.kolumna5,
  d1.imei
from
  dupa d1,
  (select max(kolumna5) as kol5, imei from dupa group by imei) d2
where
  d1.imei = d2.imei
  and d1.kolumna5 = d2.kol5

1 użytkowników online, w tym zalogowanych: 0, gości: 1