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

Bagaimana saya bisa membuat dua kondisi dalam memiliki klausa?

Seperti yang didokumentasikan di bawah SELECT Sintaks:

Dengan kata lain, ini diterapkan setelah operasi pengelompokan telah dilakukan (berbeda dengan WHERE , yang dilakukan sebelum operasi pengelompokan apa pun). Lihat WHERE vs HAVING .

Oleh karena itu, kueri Anda saat ini pertama-tama membentuk kumpulan hasil dari berikut ini:

SELECT   COUNT(domain) AS `sum domains`, file
FROM     `table`
GROUP BY Number

Lihat di sqlfiddle :

| SUM DOMAINS |      FILE |
---------------------------
|           2 | aaa.com_1 |
|           2 | bbb.com_1 |
|           1 | eee.com_1 |

Seperti yang Anda lihat, nilai yang dipilih untuk file kolom hanyalah salah satu nilai dari setiap grup—seperti yang didokumentasikan dalam MySQL Ekstensi ke GROUP BY :

Kueri Anda saat ini kemudian melanjutkan untuk memfilter hasil ini sesuai dengan HAVING klausa:

HAVING   COUNT(Number) > 1 AND file LIKE '%\_1'

Dengan nilai file dipilih di atas, setiap grup cocok dengan kriteria kedua; dan dua kelompok pertama cocok dengan kriteria pertama. Oleh karena itu hasil query lengkap adalah:

| SUM DOMAINS |      FILE |
---------------------------
|           2 | aaa.com_1 |
|           2 | bbb.com_1 |

Mengikuti komentar Anda di atas , Anda ingin memfilter catatan pada file sebelum pengelompokan dan kemudian memfilter grup yang dihasilkan untuk grup yang berisi lebih dari satu kecocokan. Oleh karena itu gunakan WHERE dan HAVING masing-masing (dan pilih Number bukannya file untuk mengidentifikasi setiap kelompok):

SELECT   Number, COUNT(*) AS `sum domains`
FROM     `table`
WHERE    file LIKE '%\_1'
GROUP BY Number
HAVING   `sum domains` > 1

Lihat di sqlfiddle :

| NUMBER | SUM DOMAINS |
------------------------
|    222 |           2 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Berapa nomor MAX jika saya menyimpan int(255) di MySQL?

  2. Tomcat 7.0.42 pooling, hibernate 4.2, solusi autoreconnect mysql rock solid

  3. Konektor/C++ Kode kesalahan MySQL:2014, SQLState:HY000 dan Perintah tidak sinkron mengapa?

  4. Cara Mengganti Nama Database di MySQL

  5. Bagaimana cara menghindari koma di dalam nilai CSV saat mengimpor tabel ke MySQL?