我对 SQL 和 SQL Server 非常陌生,希望对以下问题有任何帮助。
我正在尝试用新价格更新股价表。
该表有三列:股票代码、日期、价格。
分享代码+日期=PK
可以想象,如果您有数千个共享代码和每个 10 年的数据,那么表会变得非常大。所以我创建了一个单独的表,称为共享 ID 表,并在第一个表中使用共享 ID(我被可靠地告知这会加快查询速度,因为按整数搜索比字符串更快)。
所以,总而言之,我有两个表如下:
Table 1 = Share_code_ID (int), Date, Price
Table 2 = Share_code_ID (int), Share_name (string)
所以假设我想用今天股票 ZZZ 的价格更新表格。我需要:
- 在表 2 中查找与 'ZZZ' 对应的 Share_code_ID
- 如果找到,使用我刚刚找到的 Share_code_ID 使用该日期的新价格更新表 1
- 如果未找到 Share_code_ID,则更新两个表
现在让我们忽略如何为新代码生成 Share_code_ID,稍后我会担心。
我正在尝试基于以下结构松散地使用合并查询,但不知道我在做什么:
MERGE INTO [Table 1]
USING (VALUES (1,23-May-2013,1000)) AS SOURCE (Share_code_ID,Date,Price)
{ SEEMS LIKE THERE SHOULD BE AN INNER JOIN HERE OR SOMETHING }
ON Table 2 = 'ZZZ'
WHEN MATCHED THEN UPDATE SET Table 1.Price = 1000
WHEN NOT MATCHED THEN INSERT { TO BOTH TABLES }
任何帮助,将不胜感激。