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

Tách một chuỗi MYSQL từ GROUP_CONCAT thành một (mảng, như, biểu thức, danh sách) mà IN () có thể hiểu

Thay vì sử dụng IN() , sẽ sử dụng FIND_IN_SET() cũng là một lựa chọn?

http://dev.mysql .com / doc / refman / 5.0 / en / string-functions.html # function_find-in-set

mysql> SELECT FIND_IN_SET('b','a,b,c,d');
    -> 2

Dưới đây là một ví dụ đầy đủ dựa trên vấn đề ví dụ trong câu hỏi, được xác nhận là đã được người hỏi kiểm tra trong bản chỉnh sửa trước đó cho câu hỏi:

SELECT name FROM person LEFT JOIN tag ON person.id = tag.person_id GROUP BY person.id 
  HAVING ( FIND_IN_SET(1, GROUP_CONCAT(tag.tag_id)) ) AND ( FIND_IN_SET(2, GROUP_CONCAT(tag.tag_id)) );
+------+
| name |
+------+
| Bob  |
+------+


  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ính 1 tuần trước Chủ nhật cuối cùng và từ hôm nay đến Chủ nhật tuần trước

  2. thực hiện truy vấn, nhận kết quả, thực hiện lại truy vấn

  3. Mysql Sao chép Cơ sở dữ liệu từ máy chủ đến máy chủ trong một lệnh duy nhất

  4. Sự khác biệt giữa hai cách tiếp cận bảng nối này?

  5. MySql có thể khôi phục một giao dịch sql trên nhiều bảng không?