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

Làm cách nào để tìm nạp tất cả các hàng khớp với ít nhất một giá trị từ mảng?

Dựa vào sqlfiddle của Lad2025 và Câu trả lời thông minh này từ Pavel

Lược đồ

tab
CREATE TABLE tab(
   id   INTEGER  NOT NULL PRIMARY KEY 
  ,sets VARCHAR(6) NOT NULL
);
INSERT INTO tab(id,sets) VALUES (1,'1');
INSERT INTO tab(id,sets) VALUES (2,'1,2');
INSERT INTO tab(id,sets) VALUES (3,'1,2,4');
INSERT INTO tab(id,sets) VALUES (4,'1,2,6');
INSERT INTO tab(id,sets) VALUES (5,'3,8,9');
INSERT INTO tab(id,sets) VALUES (6,'7,8,9');
INSERT INTO tab(id,sets) VALUES (7,'5,8,9');

Truy vấn

-- 1,2,3,6 ... seek this

select * from tab 
WHERE CONCAT(",", `sets`, ",") REGEXP ",(1|2|3|6),";
+----+-------+
| id | sets  |
+----+-------+
|  1 | 1     |
|  2 | 1,2   |
|  3 | 1,2,4 |
|  4 | 1,2,6 |
|  5 | 3,8,9 |
+----+-------+

Tốt hơn, hãy xem các nhận xét ở trên dưới câu hỏi để chuẩn hóa dữ liệu. Bạn có thể sử dụng các chỉ mục tối ưu nếu bạn làm như vậy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tự động cập nhật hàng sau một thời gian nhất định

  2. Xác thực thuộc tính của mô hình liên quan trong Yii

  3. Chọn Nhiều Id từ một bảng

  4. Mysql cập nhật một hàng với một giá trị hàng khác trong cùng một bảng

  5. Chuyển từ MySQL sang PostgreSQL - Điều bạn nên biết