Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mengambil semua baris yang cocok dengan setidaknya satu nilai dari array?

Bersandar pada sqlfiddle Lad2025 dan Jawaban Pintar ini dari Pavel

Skema

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');

Kueri

-- 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 |
+----+-------+

Lebih baik lagi, lihat komentar di atas di bawah pertanyaan untuk normalisasi data. Anda mungkin mendapatkan penggunaan indeks yang optimal jika Anda melakukannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tambahkan 1 ke bidang

  2. Bagaimana cara memfilter (atau mengganti) karakter unicode yang membutuhkan lebih dari 3 byte dalam UTF-8?

  3. Apa cara terbaik untuk menghentikan kolom dalam skema database?

  4. Bagaimana Membandingkan Dua Kolom di MySQL

  5. Kunci utama multikolom MySQL