Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zwracasz Min() i inne pole?

Chodzi o to, że każda funkcja agregująca "nie dba o" resztę swojej linii.Jeśli nie było MIN, ale SUM, łatwiej to zobaczyć...

Rozwiązanie jest trochę skomplikowane, powinieneś zrobić coś, co obejmuje LEFT JOIN z nierównością :

SELECT u.username, l.timer AS intScore, l.hashtag

FROM
 leaderboard l
 INNER JOIN users u ON u.users_id = l.users_id
 LEFT JOIN leaderboard l2 ON l.users_id = l2.users_id AND l2.timer < l.timer
WHERE
 l2. users_id IS NULL
ORDER BY intScore ASC

Pomysł polega na uzyskaniu najniższej wartości poprzez pominięcie funkcji MIN i uzyskanie całego wiersza

Filtrowanie według daty (lub dowolnej innej kolumny/kryteriów) z tabeli liderów będzie wymagało od nas filtrowania każdej używanej tabeli Ważne jest, aby filtrować tabelę LEFT JOINed w warunku ON, w przeciwnym razie eliminujemy efekt filtrowania NULL:

SET @date0 = '2018-01-01';
SELECT u.username, l.timer AS intScore, l.hashtag

FROM
 leaderboard l
 INNER JOIN users u ON u.users_id = l.users_id
 LEFT JOIN leaderboard l2 ON l.users_id = l2.users_id AND l2.timer < l.timer AND l2.game_date >= @date0
WHERE
 l.game_date >= @date0
 l2.users_id IS NULL
ORDER BY intScore ASC

mam nadzieję, że to pomoże




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Matematyka PHP na danych SQL

  2. Błąd podczas używania niestandardowej funkcji DQL z Doctrine i Symfony2

  3. Menu nawigacyjne drzewa Mysql/php

  4. Ikona WAMP Server V 2.5 jest pomarańczowa, nie odpowiada i nie ma menu

  5. Połącz się ze zdalnym mysql przez terminal