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

mysql:aktualizacja z podzapytaniem,

Jeśli chcesz zaktualizować wszystkie wiersze w data tabeli, możesz zrobić coś takiego:

UPDATE data
  LEFT
  JOIN node
    ON node.title = data.name
   SET data.id = node.nid

UWAGI:

Jeśli istnieje wiele wierszy w node z taką samą wartością dla title , który pasuje do name w data , nie wiadomo, który z tych wierszy ma wartość nid zostanie przydzielony od.

Jeśli istnieją wartości name w data tabela, której nie ma w node tabela (w title kolumna), wówczas wartość NULL zostanie przypisana do id kolumna.

Niektóre poprawki w zapytaniu mogą zmienić to zachowanie.

Można to osiągnąć za pomocą podzapytania, ale użyłbym po prostu operacji sprzężenia. Myślę, że możesz użyć skorelowanego podzapytania, takiego jak to:

UPDATE data
   SET data.id = ( SELECT node.nid
                     FROM node
                    WHERE node.title = data.name
                    ORDER BY node.nid
                    LIMIT 1
                 )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy możesz zreplikować konkretną bazę danych lub tabelę za pomocą RDS firmy Amazon?

  2. Wybierz i zaktualizuj w tym samym zapytaniu

  3. Jak działa memcache z MySQL?

  4. TypeError:obiekt „NoneType” nie jest indeksowany w Flask, aplikacji mysql

  5. Kolejność MYSQL według sortowania rosnąco i malejąco