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

MySQL как да не включвам дублиращи се редове, когато използвам SUM и COUNT с множество INNER JOINS?

Ето едно решение. Първо намалете набора до различни редове в извлечена таблица, след което приложете GROUP BY към този резултат:

SELECT SUM(case when d.status = 2 then d.value end) as 'val_accepted'
FROM (
  SELECT DISTINCT p.id, p.status, p.value, pc.library_id
  FROM props p
  INNER JOIN p_contents AS pc ON p.id = pc.prop_id
  INNER JOIN contents AS c ON c.id = pc.library_id
  WHERE p.account_id = 3) AS d
GROUP BY d.library_id

Използвате DISTINCT(pc.library_id) във вашия пример, сякаш DISTINCT се отнася само за колоната в скобите. Това е често срещано погрешно схващане. DISTINCT се прилага за всички колони на списъка за избор. DISTINCT не е функция; това е модификатор на заявка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявка за актуализиране на MySQL с помощта на ляво присъединяване

  2. PHP - Единични или двойни кавички около SQL заявка?

  3. PHP mysql_num_rows die грешка

  4. Подготвените изявления кешират ли се от страна на сървъра при множество зареждания на страници с PHP?

  5. Масиви за мета заявки на WordPress