sql >> Databasteknik >  >> RDS >> PostgreSQL

Bulkuppdatering av en sammanfogad tabell med ActiveRecord update_all och Rails 4

Sedan Chat.update_all kommer att lägga till UPDATE chats SET... det enda sättet jag kan tänka mig att få rails att göra en uppdatering med ett alias (UPDATE chats AS c ) är genom att använda connection.update och en sql-sträng:

Chat.connection.update(Q%{
  UPDATE chats AS c 
  SET email = m.source_name
  FROM messages AS m
  WHERE c.id = m.chat_id 
    AND m.created_at >= '2014-10-10'
});

Inte bra om du vill undvika SQL-fragment, men att använda en a join som i din fråga kan vara det enda sättet om du vill använda AREL.




  1. Funktion eller procedur för en IN-klausul

  2. förslag för att skapa mysql-databasstruktur

  3. Hur tvingar man Oracle att använda index range scan?

  4. Mysql - dynamisk SQL tillåts inte i triggern