Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy można dynamicznie odwoływać się do wartości wpisu tabeli mysql z drugiego wpisu tabeli?

Jest na to 2.5 sposobów (w zasadzie dwa, ale wydaje się, że są trzy):

Od najłatwiejszego do najtrudniejszego...

Opcja 1:

Jeśli potrzebujesz tableA, aby odzwierciedlić wartość tableB, nie przechowuj w ogóle wartości w tableA, po prostu użyj wartości tableB. Użyj połączenia:

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

lub podwybór

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

Opcja 2:

Jeśli jesteś zadowolony z opcji 1, przekonwertuj ją na widok, który zachowuje się jak tabela (z wyjątkiem ograniczeń dotyczących aktualizowania widoków będących złączeniami):

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

Opcja 3:

Utwórz wyzwalacz bazy danych, który uruchamia się, gdy wartość tabeliB zostanie zmieniona i kopiuje wartość do odpowiedniego wiersza/kolumny w tabeliA

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

Zauważ, że new i old to specjalne nazwy nadawane nowym i starym wierszom, dzięki czemu można odwoływać się do wartości w aktualizowanej tabeli.

Wybierz opcję, która najlepiej odpowiada Twoim potrzebom.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php mysql sortuj według daty (najnowsze)

  2. Konwertuj zapytanie MySQL na JSON za pomocą PHP

  3. Używanie aliasu w innej kolumnie

  4. Nigdy nie usuwać wpisów? Dobry pomysł? Zwykły?

  5. mysqldump tabela bez zrzucania klucza podstawowego