Mysql
 sql >> база данни >  >> RDS >> Mysql

Възможно ли е динамично да се посочи стойност на запис в таблица на mysql от втори запис в таблица?

Има 2,5 начина да направите това (по принцип два, но изглежда, че има три):

От най-лесното към най-трудното...

Вариант 1:

Ако имате нужда от tableA, за да отразява стойността на tableB, изобщо не съхранявайте стойността в tableA, просто използвайте стойността на tableB. Използвайте или съединение:

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

или подизбор

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

Вариант 2:

Ако сте доволни от опция 1, преобразувайте я в изглед, който се държи като таблица (с изключение на ограниченията за актуализиране на изгледи, които са обединения):

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

Вариант 3:

Създайте тригер на база данни, който се задейства, когато стойността на tableB се промени и копира стойността в съответния ред/колона в tableA

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

Имайте предвид, че new и old са специални имена, дадени на новите и старите редове, за да можете да препращате към стойностите в таблицата, която се актуализира.

Изберете опцията, която най-добре отговаря на вашите нужди.



  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 ред НЕ е в масив

  2. Неизвестна колона на Laravel 'updated_at'

  3. XAMPP Стартира автоматично при стартиране на Windows 7

  4. H2 - Грешка при достъпа до свързана таблица със SQL израз SELECT * FROM null T

  5. Избиране на потребители, на които не е изпратен бюлетин