Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL bagaimana saya tidak memasukkan baris duplikat ketika saya menggunakan SUM dan COUNT dengan beberapa INNER JOIN?

Inilah salah satu solusinya. Pertama kurangi set ke baris berbeda dalam tabel turunan, lalu terapkan GROUP BY ke hasil itu:

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

Anda menggunakan DISTINCT(pc.library_id) dalam contoh Anda, seolah-olah DISTINCT hanya berlaku untuk kolom di dalam tanda kurung. Ini adalah kesalahpahaman umum. DISTINCT berlaku untuk semua kolom daftar pilih. DISTINCT bukan fungsi; itu adalah pengubah kueri.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LIKE dan % Wildcard di Doctrine's findBy*()

  2. Batasan kunci utama MySql dengan nama

  3. Dapatkan Jumlah Terbesar di Database mySQL di PHP

  4. Hitung perbedaan waktu antara dua cap waktu di mysql

  5. Bagaimana menemukan nama tabel yang gambarnya dipilih secara acak?