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

Wybierz rekordy MySQL z sumą większą niż próg

Wydaje się to pasować do wyników UNION. Musisz więc uzyskać 2 zapytania (po jednym dla każdego „kryterium”) i połączyć ich wynik za pomocą unii.

Pierwsze zapytanie to:

SELECT f1.user_id, f1.id AS file_id, SUM(f1.fileSize) AS totalSum
FROM files AS f1 
WHERE f1.user_id = 1
GROUP BY f1.id 
HAVING totalSum <= 350000;

Teraz potrzebujesz zapytania, które określa, czy rozmiar jest za duży:

SELECT f1.user_id, f1.id AS file_id, MAX(f1.fileSize) AS max
FROM files AS f1 
WHERE f1.user_id = 1
GROUP BY f1.id 
HAVING max >= 350000;

Następnie chcesz połączyć je w jedno zapytanie. Ponieważ oba mają te same pola, możesz po prostu „połączyć” wynik

SELECT f1.user_id, f1.id AS file_id, SUM(f1.fileSize) AS totalSum
FROM files AS f1 
WHERE f1.user_id = 1
GROUP BY f1.id 
HAVING totalSum <= 350000
UNION
SELECT f1.user_id, f1.id AS file_id, MAX(f1.fileSize) AS max
FROM files AS f1 
WHERE f1.user_id = 1
GROUP BY f1.id 
HAVING max >= 350000;

PS:Miałeś "ON f1.id>=f2.id" jako kryterium przyłączenia, nie wiesz, dlaczego> to byłoby bardzo specyficzne dla przypadku :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uruchom surowy SQL podczas migracji

  2. wprowadzone dane formularza nie są zapisywane w mysql db?

  3. Nie udało się zmienić tabeli dodawania klucza obcego

  4. Dołącz do dwóch stołów w PHP

  5. użycie auto_increment w kluczu złożonym