Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:Как да групирате SELECT редове с множество двойки в клауза WHERE

Ако търсите елегантен SQL, можете да използвате конструктори на редове:

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

Това обаче изобщо не е удобно за индексиране и не би било препоръчително за таблица със значителен размер. Вместо това можете да материализирате таблица с желаните от вас двойки и да я присъедините към вашата таблица:

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;

Или попълнете предварително (временна) таблица:

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. Рекурсивно включва Sequelize?

  2. Как да използвате MySQL с Deno и Oak

  3. PDO и обвързване на множество набори стойности по време на вмъкване - наскоро

  4. mysql изберете най-ниската цена от multi select

  5. Параметър номер 2 не е OUT параметър