Mysql
 sql >> база данни >  >> RDS >> Mysql

Връщане на Min() и друго поле?

Работата е следната:всяка агрегатна функция "не се интересува" от останалата част от своя ред. Ако не е MIN, а SUM, по-лесно е да се види...

Решението е малко сложно, трябва да направите нещо, което включва LEFT JOIN с неравенство:

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

Идеята е да получите най-ниската стойност, като прескочите функцията MIN и получите целия ред

Филтрирането по дата (или всяка друга колона/критерий за този въпрос) от таблицата с класации ще изисква от нас да филтрираме всяка таблица, която използваме. Важно е да филтрирате LEFT JOINed таблицата при условие ON, в противен случай елиминираме ефекта на филтриране NULLs:

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

надявам се да помогне




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHPMailer изпраща двойни имейли

  2. Какъв е еквивалентът на LEN() в MySQL?

  3. отношения с родители и деца

  4. Предварителна поръчка на изявление GROUP BY

  5. Как да увеличим SQL с помощта на тригер?