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

Bagaimana cara mencocokkan catatan yang terkait dengan kumpulan catatan tertentu lainnya?

Ada beberapa cara untuk mencapai ini, salah satunya adalah dengan mengelompokkan hasil dan menggunakan HAVING untuk membandingkan jumlah tag yang berbeda

$query = $this->Users
    ->find()
    ->matching('Tags', function ($query) {
        return $query->where(['Tags.name IN' => ['Tag1', 'Tag2']]);
    })
    ->group('Users.id')
    ->having([
        $this->Users->query()->newExpr('COUNT(DISTINCT Tags.name) = 2')
    ]);

Ini hanya akan memilih pengguna yang memiliki dua tag berbeda, yang hanya dapat berupa Tag1 dan Tag2 karena ini adalah satu-satunya yang bergabung. Jika name kolom unik, Anda dapat mengandalkan kunci utama sebagai gantinya.

IN Omong-omong. pada dasarnya sama dengan OR . Anda kondisi (sistem database akan memperluas IN ke OR kondisi yang sesuai).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. IllegalArgumentException:Jenis tidak boleh nol

  2. Bagaimana melakukan pencadangan tambahan di Mysql

  3. Struktur Keranjang Belanja MySQL

  4. Jalankan skrip SQL untuk membuat tabel dan baris

  5. PDO MySQL:Gunakan PDO::ATTR_EMULATE_PREPARES atau tidak?