Dựa vào sqlfiddle của Lad2025 và Câu trả lời thông minh này từ Pavel
Lược đồ
tabCREATE 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.