cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk MENGUMPULKAN OLEH berbilang lajur dengan berbilang nilai HAVING dalam MySQL?

Saya cuba mencipta pertanyaan mysql untuk melihat jadual tempat pertanyaan carian disimpan. Pertanyaan ini cuba mendapatkan semua baris yang sepadan dengan kriteria berikut:

Pertanyaan ini tidak berfungsi tetapi harus memberikan gambaran keseluruhan tentang perkara yang saya cuba lakukan:

SELECT 
  * 
FROM 
  `analytics` 
WHERE 
  `date` >= '2021-01-01' 
GROUP BY 
  `query` 
HAVING 
  COUNT(*) >= 3 
  AND 
GROUP BY 
  `user` 
HAVING 
  COUNT(*) >= 2 
ORDER BY 
  id DESC;

Contoh data

id Pengguna Pertanyaan Tarikh
1 5 Apa itu anjing 2021-01-01
2 5 Apa itu anjing 2021-01-01
3 6 Apa itu anjing 2021-01-01
4 7 Apa itu anjing 2021-01-01
5 7 Apa itu saudara 2021-01-01

Contoh SQL

SELECT 
  * 
FROM 
  analytics 
WHERE 
  date >= '2021-01-01' 
GROUP BY 
  query 
HAVING 
  COUNT(*) >= 3 
  AND 
GROUP BY 
  user 
HAVING 
  COUNT(*) >= 2 
ORDER BY 
  id DESC;

Menggunakan nilai yang ditetapkan dalam pertanyaan di atas, satu baris harus dikembalikan untuk pertanyaan "Apakah itu anjing", semua lajur lain adalah tidak penting.

Saya tahu anda boleh KUMPULAN MENGIKUT lajur yang berasingan dengan koma, tetapi saya tidak dapat memikirkan cara untuk menetapkan nilai yang berbeza untuk setiap lajur.

P粉775723722P粉775723722320 hari yang lalu477

membalas semua(1)saya akan balas

  • P粉818317410

    P粉8183174102024-02-27 00:58:40

    Anda boleh menetapkan kedua-dua syarat dalam klausa HAVING yang sama:

    SELECT `query` 
    FROM `analytics` 
    WHERE `date` >= '2021-01-01' 
    GROUP BY `query`
    HAVING COUNT(*) >= 3 AND COUNT(DISTINCT `user`) >= 2;

    balas
    0
  • Batalbalas