sql >> Database teknologi >  >> RDS >> Mysql

MySQL:Sådan bulker du SELECT rækker med flere par i WHERE-klausulen

Hvis du leder efter elegant SQL, kan du bruge rækkekonstruktører:

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

Det er dog slet ikke indeksvenligt og vil ikke blive anbefalet på et bord af nogen væsentlig størrelse. I stedet kan du lave et bord med dine ønskede par og forbinde det med dit bord:

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;

Eller udfyld en (midlertidig) tabel på forhånd:

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. Mysql-dækkende vs sammensat vs kolonneindeks

  2. Udforsker Storage Engine-indstillinger for MariaDB

  3. Taling About SQL Server Performance Flaskehalse

  4. java.math.BigInteger kan ikke castes til java.lang.Integer