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

MySQL jak nie uwzględniać zduplikowanych wierszy, gdy używam SUM i COUNT z wieloma INNER JOINS?

Oto jedno rozwiązanie. Najpierw zredukuj zestaw do odrębnych wierszy w tabeli pochodnej, a następnie zastosuj do tego wyniku funkcję 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

Używasz DISTINCT(pc.library_id) w twoim przykładzie, tak jakby DISTINCT dotyczyło tylko kolumny w nawiasach. To powszechne nieporozumienie. DISTINCT dotyczy wszystkich kolumn listy wyboru. DISTINCT nie jest funkcją; to modyfikator zapytania.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyszukiwać z pola serializacji w bazie danych mysql?

  2. Java PreparedStatement i ON DUPLICATE KEY UPDATE:skąd mam wiedzieć, czy wiersz został wstawiony lub zaktualizowany?

  3. MYSQL Konwertuj znacznik czasu na miesiąc

  4. Czy możemy uruchomić zapytanie mysql w wierszu poleceń w systemie Windows?

  5. LINQ to Entities wielokrotne dołączanie