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

MySQL:Cara massal SELECT baris dengan banyak pasangan dalam klausa WHERE

Jika Anda mencari SQL yang elegan, Anda dapat menggunakan konstruktor baris:

SELECT * FROM email_phone_notes WHERE (email, phone) IN (
  ('[email protected]'  , '555-1212'),
  ('[email protected]', '888-1212')
  -- etc.
);

Namun, itu sama sekali tidak ramah indeks dan tidak akan direkomendasikan pada tabel dengan ukuran signifikan apa pun. Sebagai gantinya, Anda dapat mewujudkan tabel dengan pasangan yang Anda inginkan dan menggabungkannya dengan tabel Anda:

SELECT * FROM email_phone_notes NATURAL JOIN (
  SELECT '[email protected]' AS email, '555-1212' AS phone
UNION ALL
  SELECT '[email protected]', '888-1212'
-- etc.
) t;

Atau isi tabel (sementara):

CREATE TEMPORARY TABLE foo (PRIMARY KEY (email, phone)) Engine=MEMORY
  SELECT email, phone FROM email_phone_notes WHERE FALSE
;

INSERT INTO foo
  (email, phone)
VALUES
  ('[email protected]'  , '555-1212'),
  ('[email protected]', '888-1212')
  -- etc.
;

SELECT * FROM email_phone_notes NATURAL JOIN foo;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pertanyaan MySQL - Bagaimana menangani beberapa jenis pengguna - satu tabel atau beberapa?

  2. Forum PHP - cara mengatasi diskusi / topik / posting yang belum dibaca

  3. Upaya tidak valid untuk Membaca saat pembaca ditutup

  4. Kode Kesalahan MySQL 1452 Batasan Kunci Asing

  5. UNIX_TIMESTAMP() Contoh – MySQL