我有一个名为“Input_Data”的表,如下所示,从这个表中我将获取其他表的输入值。
public class Update_Table
{
private String tableName = "Test";
private AmazonDynamoDBClient client =null;
public void DynamoDBClient() throws IOException
{
AWSCredentials cred = new PropertiesCredentials(Update_Table.class
.getResourceAsStream("AwsCredentials.properties"));
client = new AmazonDynamoDBClient(cred);
}
}
另一个表“Output_data”如下所示,此表将根据来自“Input_Data”的值进行更新
**TN start_date operator**
12345 12-May-2015 123
67890 14-May-2015 456
由于12345 source_id已经存在于Output_Data表中,在这种情况下,我想更新来自“Input_Data”表的source_id 12345的条目,使得“Output_Data”表中的先前条目将以新条目的start_date到期。并且将插入另一行用于新条目。因此“Output_Data”应如下所示:
**SOURCE_ID EFFECTIVE_DATE EXPIRATION_DATE PROVIDER_ID**
12345 01-Jan-2014 555
我是SQL的新手,并尝试使用下面的一些查询执行上述任务:
**DEST_ID EFFECTIVE_DATE EXPIRATION_DATE PROVIDER_ID**
12345 01-Jan-2014 12-May-2015 555
12345 12-May-2015 123
67890 14-May-2015 456
但是上面的查询甚至没有被执行,所以我无法检查输出。
答案 0 :(得分:2)
在downvoting之前阅读这个:问题是贴有sqlserver,mysql和oracle的标签,oracle的答案尚未准备就绪,正在进行中
这适用于sql-server:
UPDATE output_data
SET expiration_date =
(select start_date
FROM input_data
where TN = output_data.source_id);
INSERT INTO output_data(source_id, effective_date,provider_id)
SELECT TN,start_date,operator FROM input_data;
完全相同的代码适用于mysql: