Rumah  >  Soal Jawab  >  teks badan

Pertanyaan MySQL menggunakan kumpulan demi klausa mengembalikan lebih banyak baris berbanding tanpa kumpulan demi klausa

Tiada kumpulan mengikut klausa, hanya 1 rekod dipulangkan antaranya, jumlah rekod yang diperlukan dikembalikan

SELECT 
PM.id AS id, PM.email AS email, PM.name AS name, PM.mobile AS mobile, 
PM.country AS country, PM.status AS status, PM.cdate AS joined_date, 
PM.details_status AS details_status, PM.freeze AS freeze, PM.blacklist AS blacklist, 
PM.blacklist_remark AS blacklist_remark, PM.blacklist_adate AS blacklist_adate, 
MA.m_app_id AS app_id, MA.full_name AS replace_name, MAX(MA.ldate) AS ldate, 
MA.service_type AS svc_type 

FROM whatever_db.tw_person_merchant PM 
    LEFT JOIN (
        whatever_db.tw_person_merchant PMM
        INNER JOIN
        whatever_db.tw_merchant_application_details MA 
        ON PMM.app_id = MA.m_app_id
        INNER JOIN 
        whatever_db.tw_merchant_application MAP 
        ON MA.m_app_id = MAP.id
        AND MAP.status NOT IN ('10' , '60')
        AND MA.id = (SELECT max(id) FROM whatever_db.tw_merchant_application_details WHERE m_app_id = PMM.app_id )
    )  ON PM.app_id = MA.m_app_id 

WHERE PM.details_status IN ('90', '0')
AND PM.blacklist = 0 
AND PM.name != ''

-- **here, without the group by clause, the result is just 1 record
GROUP BY PM.id 
ORDER BY PM.id DESC

Saya sedang menguji sama ada skrip sql mengembalikan pedagang yang berkaitan, tetapi hanya 1 rekod dipaparkan di tengah Selepas percubaan berulang, "kumpulan mengikut" menyelesaikan masalah ini. Tetapi "kumpulan mengikut" ini tidak meringkaskan, tetapi menunjukkan lebih banyak hasil daripada tanpanya. Keputusan yang tidak dijangka dan pengkhianatan akal.

P粉497463473P粉497463473409 hari yang lalu655

membalas semua(1)saya akan balas

  • P粉009186469

    P粉0091864692023-09-07 19:32:40

    Apabila anda menggunakan fungsi agregat seperti GROUP BY时,查询结果对于GROUP BY表达式的每个不同值都有一行。在您的情况下,PM.id 的每个值占一行。诸如 MAX() keputusan akan digunakan pada subset baris dalam setiap kumpulan yang dikaitkan dengan nilai yang diberikan.

    Jika anda tidak menggunakan GROUP BY, hasilnya sebenarnya adalah satu set, jadi pertanyaan hanya mengembalikan satu baris. Sebarang fungsi agregat digunakan pada keseluruhan set baris.

    https://dev.mysql.com/doc/refman /8.0/en/select.html Jauh di dalam halaman panjang itu mengandungi ayat ini:

    balas
    0
  • Batalbalas