【发布时间】:2016-02-26 14:18:43
【问题描述】:
我有一张如下表:
ID Col_A Col_B
1 P-1 123
2 S 123
3 P-3 456
4 S 456
ID 是主键。
我想要做的是基于 Col_B 等价,将第 1 行和第 3 行的 ID 连接到第 2 行和第 4 行的 Col_A。也就是说,Col_A = 'S',在Col_B中找到具有相同值的行的ID,并将该ID添加到Col_A。
结果是:
1 P-1 123
2 S-1 123
3 P-3 456
4 S-3 456
有人可以告诉我如何在 SQLite 中编写此查询,我没有成功。
在 SQL Server 中,我在同一张表上使用了内部联接,这很有效:
UPDATE A
SET A.Col_A = 'S-' + CAST(B.ID as VARCHAR(24))
FROM Table1 A
INNER JOIN Table1 B ON
A.Col_B = B.Col_B
WHERE A.Col_A = 'S';
据我所知,您不能在更新中使用 SQLite 中的联接,但不知道该怎么做。
我试过了:
UPDATE Table1
SET Col_A = 'S' || (SELECT B.ID from Table1 B WHERE B.Col_B = Col_B)
WHERE Col_A = 'S';
这会导致:
1 P-1 123
2 S-1 123
3 P-3 456
4 S-1 456
【问题讨论】:
标签: sqlite tsql sql-update inner-join