Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tìm hàng chứa ID cụ thể trong chuỗi danh sách cách nhau bởi dấu phẩy MySQL

Sử dụng hàm FIND_IN_SET() để tìm một giá trị trong chuỗi các giá trị cách nhau bởi dấu phẩy (không có khoảng trắng).

Tạo bảng và dữ liệu

mysql> CREATE TABLE DemoTable (
    -> ListOfIds VARCHAR(200)
    -> );
Query OK, 0 rows affected (0.72 sec)
mysql> INSERT INTO DemoTable VALUES('100,2093,678,686'), ('0595,9585,4885,95959'), ('0059954,95986884,9059596,9005');
Query OK, 3 rows affected (0.12 sec)

Truy vấn tìm hàng chứa '9005'

mysql> SELECT * FROM DemoTable WHERE FIND_IN_SET('9005', ListOfIds);

Kết quả:

+-------------------------------+
| ListOfIds                     |
+-------------------------------+
| 0059954,95986884,9059596,9005 |
+-------------------------------+
1 row in set (0.00 sec)

Lưu ý quan trọng:

  • FIND_IN_SET yêu cầu chuỗi không có khoảng trắng sau dấu phẩy
  • Không dùng index, chậm trên bảng lớn
  • Thiết kế tốt hơn: bảng riêng cho mối quan hệ many-to-many