2016-07-14 18 views
1

I Record1 's ID zu Record2' s ID wenn zu aktualisieren versuche:SQLite - Aktualisieren einer Spalte basierend auf den Werten aus einer anderen Tabelle Spalten

  • die Namen ist das gleiche in beiden Tabellen und
  • Gewicht ist größer in Record2.

Record1

| ID | Weight | Name | 
|----|--------|------| 
| 1 |  10 | a | 
| 2 |  10 | b | 
| 3 |  10 | c | 

Record2

| ID | Weight | Name | 
|----|--------|------| 
| 4 |  20 | a | 
| 5 |  20 | b | 
| 6 |  20 | c | 

ich folgende SQLite Abfrage versucht haben:

update record1 
set id = 
    (select record2.id 
    from record2,record1 
    where record1.name=record2.name 
    and record1.weight<record2.weight) 

Verwendung die obige Abfrage Record1 's ID wird für alle Datensätze auf 4 aktualisiert.

Antwort

1

Schreiben SELECT ...record1 führt eine neue Instanz der record1 Tabelle ein, die die äußere versteckt.

Um auf die aktuelle Zeile in der äußeren Abfrage beziehen können, nur table1 aus der FROM-Klausel entfernen:

UPDATE record1 
SET id = (SELECT record2.id 
      FROM record2 
      WHERE record1.name = record2.name 
      AND record1.weight < record2.weight); 
+0

Es hat funktioniert! Vielen Dank @CL. – Prabha

Verwandte Themen