完成noob警报!我需要为我测量的许多设备存储一组较大的数据字段(480)。每个字段都是十进制(8,5)。首先,这是一张不合理的大桌子吗?我真的没有经验,所以如果它无法管理,我可能会开始考虑另一种存储方法。
现在,我正在使用INSERT创建一个新行,然后尝试使用UPDATE(在循环中)将480个数据值放入新行。目前,每个UPDATE都会覆盖整个列。如何仅指定修改最后一行?例如,一个表(“幅度”)具有列“id”,“field1”,“field2”,......:
sql UPDATE magnitude SET field1 = 3.14;这会修改整个“field1”列。
尝试做类似的事情: sql UPDATE magnitude SET field1 = 3.14 WHERE id = MAX(id)
显然我是一个完整的菜鸟。只是试图让这一件事起作用并继续前进......看了很多但却无法找到解决方案。任何帮助表示赞赏。
答案 0 :(得分:1)
您应该使用insert
命令一次插入一行,并使用填充值插入一行,而不是插入行然后使用值更新它。
即。
insert into tTable (column1, column2, ..., column n) values (datum1, datum2, ..., datum n)
您的表格定义应该包含属性identity
的ID列,这意味着它会在您插入时为您自动填充,即您不需要指定它。
如果我自己这样做,我会选择一个有很多行而不是很多列的不同解决方案:
创建表格tDevice (ID int, Name nvarchar)
创建表格tData (ID int, Device_ID int, Value decimal(8,5))
- 将Device_ID
上的外键返回tDevice.ID
然后,填充:
将所有设备插入tDevice
为每个设备/数据组合在tData
中插入一行
- 即480 x n行,n是设备数量
然后,您可以查询所需的数据:
select * from tData join tDevice on tDevice.ID = tData.Device_ID