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

MySQL избира записи със сума, по-голяма от прага

Това изглежда е подходящо за набор от резултати на UNION. Така че трябва да получите 2 заявки (по една за всеки „критерий“) и да присъедините техния резултат с помощта на union.

Първата заявка ще бъде:

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;

Сега имате нужда от заявката, която избира, ако размерът е твърде голям:

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;

След това искате да ги комбинирате в една заявка. Тъй като и двете имат едни и същи полета, можете просто да „обедините“ резултата

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:Имахте "ON f1.id>=f2.id" като критерии за присъединяване, не съм сигурен защо> това би било много специфично за случая :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пускане на колона с външен ключ

  2. Инициализирайте MariaDB 10.4.12 на CentOS 7.7

  3. Как да разбера дали дадена дата отговаря на интервал в PHP или MySQL?

  4. Как ефективно да определяте промените между редовете с помощта на SQL

  5. Показва стойността на една колона на mysqli заявката