INNER JOIN更新

时间:2014-10-06 14:53:33

标签: sql sql-update inner-join javadb

我正在使用JavaDB并在同一个数据库中使用两个表。

我正在尝试使用Vehicle表的SellDate在指定日期之前的“Vehicles”表的“SellDate”列中的值更新“SalesResp”表中的PrevSales列。我通过使用两个表中存在的“VIN”列来匹配两个表之间的数据。

我的代码中的内部联接不断出现错误,SQL状态为42x01。

UPDATE SALESRESP JOIN VEHICLES ON (SALESRESP.VIN = VEHICLES.VIN) 
SET SALESRESP.PrevSale = VEHICLES.SELLDATE WHERE 
(((VEHICLES.SELLDATE)<'2013-09-24'));

我尝试了各种配置,交换INNER JOIN和SET展示位置,我尝试了包含“FROM”子句。似乎没什么用。有什么建议吗?

编辑:确切的错误代码:

Error code 30000, SQL state 42X01: Syntax error: Encountered "JOIN" at line 1, column 19.

3 个答案:

答案 0 :(得分:1)

使用以下代码查看,替换日期而不是sysdate。

UPDATE SALESRESP  
SET SALESRESP.PrevSale  = (SELECT VEHICLES.SELLDATE FROM VEHICLES 
WHERE SALESRESP.VIN = VEHICLES.VIN  AND
VEHICLES.SELLDATE <'2013-09-24');

答案 1 :(得分:0)

UPDATE S SET S.PrevSale = V.SELLDATE FROM SALESRESP S 
inner join  VEHICLES V on S.VIN = V.VIN AND V.SELLDATE < '2013-09-24'

答案 2 :(得分:0)

好的,让我们试着更明确一点:

UPDATE SALESRESP SET SALESRESP.PrevSale = VEHICLES.SELLDATE FROM VEHICLES JOIN SALESREP ON (SALESRESP.VIN = VEHICLES.VIN) WHERE (((VEHICLES.SELLDATE)<'2013-09-24'))

看看是否有效。