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

Có thể tham chiếu động giá trị mục nhập bảng mysql từ mục nhập bảng thứ hai không?

Có 2,5 cách để làm điều này (về cơ bản là hai, nhưng có vẻ như có ba):

Từ dễ nhất đến khó nhất ...

Tùy chọn 1:

Nếu bạn cần tableA để phản ánh giá trị của tableB, hoàn toàn không lưu trữ giá trị trong tableA, chỉ sử dụng giá trị của tableB. Sử dụng kết hợp:

select a.*, b.col1
from tableA a
join tableB b on <some join condition>

hoặc một lựa chọn phụ

select *, (select col1 from tableB where <some condition>) col1
from tableA

Tùy chọn 2:

Nếu bạn hài lòng với tùy chọn 1, hãy chuyển đổi nó thành một dạng xem, hoạt động giống như một bảng (ngoại trừ các hạn chế về việc cập nhật các dạng xem được nối):

create view myview as 
select ... (one of the above selects)

Tùy chọn 3:

Tạo trình kích hoạt cơ sở dữ liệu kích hoạt khi giá trị của tableB bị thay đổi và sao chép giá trị vào hàng / cột thích hợp trong bảngA

create trigger tableB_update
after update on tableB
for each row
update tableA set
tablea_col = new.col1
where id = new.tableA_id;

Lưu ý rằng newold là những tên đặc biệt được đặt cho các hàng mới và cũ để bạn có thể tham chiếu các giá trị trong bảng đang được cập nhật.

Chọn tùy chọn phù hợp nhất với nhu cầu của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. phân loại mysql của số phiên bản

  2. Các vấn đề khi sử dụng MS Access làm giao diện người dùng cho cơ sở dữ liệu MySQL mặt sau?

  3. Sử dụng MySQL với các dịch vụ không đồng nhất của Oracle

  4. Gặp sự cố với MySQL Join cần đáp ứng nhiều điều kiện

  5. QueryBuilder / Doctrine Chọn tham gia groupby