使用SQLite 3
,我试图从一个表中更新列值,其中列值来自另一个表。使用TSQL
实现这一点非常简单,但使用SQLite
证明非常困难,UPDATE
子句中不允许多表连接。
This other stack overflow question似乎有解决方案,但在我所有的列值最终都相同的情况下,它对我不起作用。
在我的方案中,我有2个表,tbl_orders
和tbl_orderitems
,其中可以有给定tbl_orderitems
条记录的许多tbl_orders
条记录。
我希望使用order_id
表中相应的tbl_orderitems
值更新id
表中的tbl_orders
列。这两个表都有一个共同的order_number
列,用于将tbl_orderitems
记录链接到相应的tbl_orders
记录。
根据The answer to the question referred to above,我有以下SQL
声明。
UPDATE tbl_orderitems
SET order_id=(select tbl_orders.id from tbl_orders, tbl_orderitems where tbl_orders.order_number = tbl_orderitems.order_number)
where EXISTS (
select tbl_orders.order_number from tbl_orders, tbl_orderitems where tbl_orders.order_number = tbl_orderitems.order_number
)
不幸的是,上面的SQL
语句最终会将order_id
表中的所有tbl_orderitems
设置为相同的值,这当然不是我想要的。
有没有办法在SQLite
中实现我想要的目标?
答案 0 :(得分:1)
我认为你想要相关的子查询:
,
您的问题是您在子查询中有from
。您需要引用外部查询。第二个问题是在join
子句中使用{{1}}。在适当的情况下,您应该始终使用正确的,明确的{{1}}语法,在这种情况下,它是不合适的。