Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL:Cách chọn hàng loạt các hàng với nhiều cặp trong mệnh đề WHERE

Nếu bạn theo đuổi SQL thanh lịch, bạn có thể sử dụng các hàm tạo hàng:

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

Tuy nhiên, điều đó hoàn toàn không thân thiện với chỉ mục và sẽ không được đề xuất trên một bảng có kích thước đáng kể. Thay vào đó, bạn có thể hiện thực hóa một bảng với các cặp mong muốn và nối chúng với bảng của bạn:

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;

Hoặc điền trước một bảng (tạm thời):

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. Chỉ cần chọn dữ liệu có chứa dấu gạch chéo ngược trong MySQL

  2. Sự cố kết nối MySQLdb

  3. Tạo đối tượng ActionScript Date từ chuỗi dấu thời gian MySQL UTC

  4. Chèn một văn bản tiếng Ba Tư trong bảng mysql

  5. Mã hóa chuỗi thử thách trong Python