SQLite - 根据另一个表的列中的值更新列

时间:2016-07-14 17:17:18

标签: sqlite

我正在尝试将 Record1 ID 更新为 Record2 ID 时间:

  • 两个表中的名称相同,
  • 记录2
  • 重量更高。

记录1

PreparedStatement

RECORD2

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

我尝试过以下SQLite查询:

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

对于所有记录,使用上述查询记录1 ID 更新为4。

1 个答案:

答案 0 :(得分:1)

SELECT ...record1引入了一个隐藏外层的record1表的新实例。

为了能够引用外部查询中的当前行,只需从FROM子句中删除table1

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