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

CHỌN với nhiều điều kiện WHERE trên cùng một cột

Bạn có thể sử dụng GROUP BYHAVING COUNT(*) = _ :

SELECT contact_id
FROM your_table
WHERE flag IN ('Volunteer', 'Uploaded', ...)
GROUP BY contact_id
HAVING COUNT(*) = 2 -- // must match number in the WHERE flag IN (...) list

(giả sử contact_id, flag là duy nhất).

Hoặc sử dụng các phép nối:

SELECT T1.contact_id
FROM your_table T1
JOIN your_table T2 ON T1.contact_id = T2.contact_id AND T2.flag = 'Uploaded'
-- // more joins if necessary
WHERE T1.flag = 'Volunteer'

Nếu danh sách các cờ rất dài và có nhiều trận đấu thì đầu tiên có lẽ nhanh hơn. Nếu danh sách cờ ngắn và có ít trận đấu, bạn có thể sẽ thấy rằng cờ thứ hai nhanh hơn. Nếu lo ngại về hiệu suất, hãy thử kiểm tra cả hai dữ liệu của bạn để xem cái nào hoạt động tốt nhất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - trường SELECT WHERE IN (truy vấn con) - Tại sao cực kỳ chậm?

  2. Cách tự động hóa truy vấn bảng Pivot trong MySQL

  3. Làm thế nào để cài đặt MySQL trên Windows 10? - Giải pháp một cửa của bạn để cài đặt MySQL

  4. Cách dễ nhất để liên kết xác minh email PHP

  5. Cách cài đặt và cấu hình phpMyAdmin trên Debian 8