无法使用连接的SQLite更新,我可以使用什么?

时间:2016-02-26 14:18:44

标签: sqlite tsql sql-update inner-join

我有一张表格如下:

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服务器中,我在同一个表上使用内连接,这可以工作:

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 

1 个答案:

答案 0 :(得分:1)

如果没有表前缀,Col_B指的是可以找到此列名的最里面的表。在这种情况下,这将是Table1 B

要引用外部表,您必须使用其名称:Table1.Col_B

UPDATE Table1
SET Col_A = 'S' || (SELECT B.ID from Table1 B WHERE B.Col_B = Table1.Col_B)
WHERE Col_A = 'S';