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

Lưu trữ một mảng có độ dài không xác định

Nếu bạn thấy mình ở trong tình huống bắt đầu có column1 , column2 trên bảng - rất có thể thiết kế của bạn đang có sai sót và thay vào đó, bạn nên tạo một bảng riêng - trong đó mỗi columnX nhận được một hàng của riêng nó. Luôn luôn tốt hơn nếu có một bảng riêng biệt nếu bạn thấy mình có nhiều cột lặp lại trên cùng một bảng.

Bằng cách đó, bạn tránh được việc lưu trữ các giá trị được phân tách bằng dấu phẩy trong các cột, bạn tránh bị hỏng mã / truy vấn của mình nếu bạn đột nhiên phải giới thiệu một giá trị khác column{X+1} - và thay vào đó có thể có nhiều hoặc ít giá trị đầu vào mà bạn cần.

Đối với bạn, đó sẽ giống như một bảng mới có tên land_owner_input , nơi bạn có giá trị (mà bạn sẽ đặt trong columnX ) và tham chiếu đến hàng trong land_owner mà giá trị thuộc về.

Mẫu thiết kế điển hình sẽ là một cái gì đó như thế này.

CREATE TABLE land_owner_input (
    land_owner_input_id INT(11) AUTO_INCREMENT
    land_owner_id INT(11), 
    land_owner_input_value VARCHAR(MAX)
);

Hãy nhớ rằng land_owner_id của bạn trong bảng mới phải có cùng loại và kích thước với ID mà nó tham chiếu.

Bạn cũng có thể tạo ràng buộc khóa ngoại giữa land_owner_id và ID của land_owner bảng để đảm bảo tính toàn vẹn của dữ liệu.

Sau khi có bảng mới, bạn có thể truy vấn chúng cùng nhau bằng cách sử dụng LEFT JOIN (hoặc JOIN bình thường nếu bạn chỉ muốn trả về các hàng nếu nó có giá trị đầu vào).

SELECT *
FROM land_owner AS lo
LEFT JOIN land_owner_input AS loi
    ON loi.land_owner_id = lo.land_owner_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àm cách nào để đặt thời gian thực thi tối đa cho một truy vấn mysql?

  2. Tinyint vs Bit?

  3. Kết nối với điều khiển từ xa Sql của tôi hiển thị cho tôi quyền truy cập bị từ chối đối với người dùng [email được bảo vệ] (Sử dụng Mật khẩu:Có)

  4. Lỗi truy vấn SQL

  5. MySQL:Kết xuất cơ sở dữ liệu từ một truy vấn SQL