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

MySql lấy danh sách các từ duy nhất từ ​​bảng trong đó các giá trị trong một trường được phân tách bằng dấu phẩy

Bạn có thể làm điều này trong SQL, mặc dù nó không đẹp.

select distinct reverse(substring_index(reverse(substring_index(tags, ',', n.n)), ',', 1)) as word
from t cross join
     (select 1 as n union all select 2 as n union all select 3 as n union all select 4 as n) n
having word is not null

Bạn cần chắc chắn rằng truy vấn con n có ít nhất số từ trong mỗi thẻ.

Tại đây là SQLFiddle chứng minh điều này.

Đây là kết hợp chéo dữ liệu ban đầu với các số tuần tự. Sau đó, nó chọn ra giá trị thứ n từ các chuỗi thẻ, sử dụng substring_index() .

Để nhận được số lượng thẻ tối đa, bạn có thể thực hiện:

select max(length(tags) - length(replace(tags, ',', 1))+1
from 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. Bảng cập nhật PDO sử dụng mảng

  2. Nhân rộng đám mây lai cho MySQL để có tính khả dụng cao

  3. Làm cách nào để trích xuất từ ​​thứ n và đếm số lần xuất hiện của từ trong một chuỗi MySQL?

  4. điều kiện trong tiêu chí trong khuôn khổ yii php

  5. làm cách nào để nhập tệp csv vào mysql từ ứng dụng hibernate + spring?