PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

W jaki sposób strona FROM UPDATE ma się do tabeli przeznaczonej dla UPDATE?

UPDATE wyświetlane zapytanie jest dokładnie takie samo jak:

UPDATE fromemailaddress f
SET    call = true 
FROM  (
   SELECT fromemailaddress
   FROM   email 
   WHERE  subject ILIKE '%tester%'
   ) e
WHERE  e.fromemailaddress = f.fromemailaddress;

subject ILIKE '%tester%' jest szybszym odpowiednikiem subject ~ 'tester' . Szczegóły dotyczące LIKE , ILIKE i dopasowywanie wyrażeń regularnych (~ ) w instrukcji lub w tej powiązanej odpowiedzi na dba.SE:

I skutecznie to samo co:

UPDATE fromemailaddress f
SET    call = true
WHERE  EXISTS (
   SELECT 1
   FROM   email e
   WHERE  e.fromemailaddress = f.fromemailaddress
   AND    e.subject ILIKE '%tester%'
   );

Użyj tego zamiast.

Jeśli w tabeli powinno być wiele wierszy email z tym samym fromemailaddress dopasowanie wiersza w fromemailaddress , wtedy ten formularz wykonuje tylko jeden aktualizacja na rząd, w przeciwieństwie do twojego nieszczęsnego oryginału.

Nie daj się zwieść faktowi, że fromemailaddress jest tutaj używany jako kolumna i jako nazwa tabeli.

Przeczytaj uważnie instrukcję tutaj i tutaj . W szczególności ten fragment:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wybrać schemat w postgresie podczas korzystania z psql?

  2. Heroku - zrzucaj i ładuj pojedynczą tabelę do współdzielonej bazy danych postgres

  3. Zliczanie liczby wystąpień podciągu w ciągu w PostgreSQL

  4. Jak mogę wygenerować serię powtarzających się liczb w PostgreSQL?

  5. Nie można połączyć się z bazą danych heroku postgresql z aplikacji lokalnego węzła za pomocą sequelize