我有一张表格如下:
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
答案 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';