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

MySQL chia các giá trị cột để sử dụng trong truy vấn phụ?

Không phải là một ý kiến ​​hay nếu giữ dữ liệu theo cách này.

Ý tưởng đầu tiên nảy ra trong đầu tôi là: http://sqlfiddle.com/#!2/ 1dd77 / 4

SELECT b.*, GROUP_CONCAT(a.name SEPARATOR ':')
FROM table2 as b
LEFT JOIN table1 as a
on b.var = a.id 
  OR  b.var regexp(CONCAT('^',a.id,':'))
  OR  b.var regexp(CONCAT(':',a.id,':'))
  OR  b.var regexp(CONCAT(':',a.id,'$'))
 GROUP BY b.id

CHỈNH SỬA 1

Biến thể có thứ tự: http://sqlfiddle.com/#!2/1dd77/38

SELECT b.*, GROUP_CONCAT(a.name ORDER BY FIND_IN_SET(a.id, REPLACE(b.var,":",",")) SEPARATOR ':' )
FROM table2 as b
LEFT JOIN table1 as a
on b.var = a.id 
  OR  b.var regexp(CONCAT('^',a.id,':'))
  OR  b.var regexp(CONCAT(':',a.id,':'))
  OR  b.var regexp(CONCAT(':',a.id,'$'))
 GROUP BY b.id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi MySql 150 - Khóa ngoại

  2. MySQL GROUP_CONCAT với COLUMN SPLIT

  3. Thứ tự hoạt động của MySQL?

  4. Làm thế nào để tăng tốc công thức Haversine trong mysql?

  5. MYSQL Left Tham gia hàng cuối cùng của kết quả