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

Nội dung theo người dùng:hai bảng có các cột cùng tên hoặc nối?

Một khái niệm rất thường được sử dụng trong tình huống như thế này là có một bảng người dùng và một bảng bài đăng, liên kết chúng với nhau bằng một số nhận dạng duy nhất. Giá trị nhận dạng này có thể là bất kỳ thứ gì - id được tuần tự hóa, tên người dùng, địa chỉ thư, v.v. - miễn là nó là duy nhất. Việc liên kết được thực hiện bằng cách sử dụng một ràng buộc khóa ngoại. Chính xác thì điều này đạt được như thế nào trong MySQL thì tôi không biết, nhưng trong Postgres thì nó được thực hiện như thế này:

CREATE TABLE users (
  id serial PRIMARY KEY,
  name text
);

CREATE TABLE posts (
  content text,
  user_id integer REFERENCES users(id) NOT NULL
);

Các bảng sau đó được hợp nhất bằng cách sử dụng một phép nối. Điều này có thể được thực hiện theo một số cách, nhưng đây là phép nối chéo sau khi chèn một số giá trị để chơi với:

@> INSERT INTO users (name) VALUES ('James');
@> INSERT INTO users (name) VALUES ('Jones');
@> INSERT INTO posts (content, user_id) VALUES ('Hello from James.', 1);
@> INSERT INTO posts (content, user_id) VALUES ('Greetings from Jones.', 2);
@> SELECT U.id AS user_id, U.name, P.content \
   FROM users U, posts P \
   WHERE U.id = P.user_id;

 user_id | name  |        content
---------+-------+-----------------------
       1 | James | Hello from James.
       2 | Jones | Greetings from Jones.

YMMV trong MySQL, nhưng tôi nghĩ rằng các cấu trúc ở trên sẽ hoạt động ngay lập tức.

(chỉnh sửa:Đã thêm CHÈN để làm rõ)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL có hai mật khẩu khác nhau?

  2. Hộp thả xuống phụ thuộc CakePHP 3

  3. ký hiệu @ trong thủ tục được lưu trữ?

  4. Cách trích xuất chuỗi giữa hai ký tự đặc biệt trong mysql

  5. Làm cách nào để tăng tốc truy vấn MySQL với nhiều phép nối