Rumah > Soal Jawab > teks badan
Andaikan saya mempunyai statistik bilangan lawatan oleh pengguna di setiap negara:
Pertanyaan adalah seperti berikut:
SELECT countries_users.user_id, countries.name, count(countries_users.id) as count_visit FROM countries_users LEFT JOIN countries on countries.id = countries_users.user_id WHERE countries_users.user_id IN (111, ...) GROUP BY countries_user.user_id, countries.id
Hasilnya adalah seperti berikut:
user_id | countries | count_visit ------------------------------- 111 | Norway | 5 111 | Japan | 2 ... | ... | ...
Sekarang, biasanya, saya akan melakukan ini pada tahap kod. Walau bagaimanapun, atas sebab yang bodoh saya ingin menambah lajur tambahan pada set hasil yang merupakan jumlah lawatan oleh pengguna, tanpa mengira negara.
Jadi, hasilnya akan menjadi:
user_id | countries | count_visit | overall_visit --------------------------------------------------- 111 | Norway | 5 | 7 111 | Japan | 2 | 7 ... | ... | ... | ...
P粉8199374862024-02-27 13:01:46
mungkin anda memerlukan subquery
SELECT cu.user_id, c.name AS countries, count(cu.id) AS count_visit, visitall.total_count_visit AS overall_visit FROM countries_users cu LEFT JOIN countries c ON c.id = cu.user_id LEFT JOIN ( SELECT user_id, SUM(count(id)) AS total_count_visit FROM countries_users WHERE user_id IN (111, ...) GROUP BY user_id ) AS visitall ON cu.user_id = visitall.user_id WHERE cu.user_id IN (111, ...) GROUP BY cu.user_id, c.id, visitall.total_count_visit