2016-07-14 181 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

相关问题