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

Permintaan SQL setidaknya satu dari sesuatu

Untuk menemukan semua pengguna dengan setidaknya satu pos dengan peringkat di atas 10, gunakan:

SELECT u.*
  FROM USERS u
 WHERE EXISTS(SELECT NULL
                FROM POSTS p
               WHERE p.user_id = u.id
                 AND p.rating > 10)

EXISTS tidak peduli dengan pernyataan SELECT di dalamnya - Anda dapat mengganti NULL dengan 1/0, yang akan menghasilkan kesalahan matematika untuk membagi dengan nol ... klausa WHERE.

Korelasi (WHERE p.user_id =u.id) adalah alasan mengapa ini disebut subkueri berkorelasi, dan hanya akan mengembalikan baris dari tabel USERS di mana nilai id cocok, selain perbandingan peringkat.

EXISTS juga lebih cepat, tergantung situasinya, karena mengembalikan nilai true segera setelah kriteria terpenuhi - duplikat tidak masalah.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kelompokkan Data OHLC-Stockmarket ke dalam beberapa kerangka waktu - Mysql

  2. Contoh CURRENT_TIME – MySQL

  3. Kembalikan fungsi Javascript

  4. Menggunakan utf8mb4 dengan php dan mysql

  5. Menyimpan datetime sebagai UTC di PHP/MySQL