sql >> Databáze >  >> RDS >> Mysql

Je možné dynamicky odkazovat na hodnotu položky tabulky mysql z druhé položky tabulky?

Existuje 2,5 způsobů, jak to udělat (v podstatě dva, ale zdá se, že existují tři):

Od nejjednoduššího po nejtěžší...

Možnost 1:

Pokud potřebujete, aby tabulka A odrážela hodnotu tabulky B, neukládejte hodnotu do tabulky A vůbec, ale použijte hodnotu tabulky B. Použijte buď spojení:

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

nebo podvýběr

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

Možnost 2:

Pokud jste spokojeni s možností 1, převeďte ji na pohled, který se chová jako tabulka (s výjimkou omezení týkajících se aktualizace pohledů, které jsou spojeními):

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

Možnost 3:

Vytvořte spouštěč databáze, který se spustí při změně hodnoty tabulky B a zkopíruje hodnotu do příslušného řádku/sloupce v tabulce A

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

Všimněte si, že new a old jsou speciální názvy přidělené novým a starým řádkům, abyste mohli odkazovat na hodnoty v aktualizované tabulce.

Vyberte možnost, která nejlépe vyhovuje vašim potřebám.



  1. AWS EMR PySpark se připojuje k mysql

  2. mysql formát data a času pomocí c#

  3. Jak získat zeměpisnou šířku a délku z sdo_geometry v oracle

  4. Jedinečné omezení Oracle a jedinečný index