2016-07-14 141 views
1

我試圖更新列記錄1IDRECORD2ID時:SQLite的 - 更新基於值從另一個表中的列

  • 名稱是在兩個表中都是相同的,並且
  • 重量更大記錄2

記錄1

| 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 | 

我曾嘗試以下SQLite的查詢:

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

使用上述查詢記錄1ID已更新爲4的所有記錄。

回答

1

寫入SELECT ...record1引入了record1表的一個新實例,該實例隱藏了外部表的一個實例。

爲了能夠引用當前行中的外部查詢,剛剛從刪除table1 FROM子句:

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

它的工作!非常感謝你@CL。 – Prabha

相關問題