2016-06-21 11 views
-1

完全なnoobアラート!私は、私が測定している多くのデバイスのそれぞれについて、データフィールド(480)の大量のセットを格納する必要があります。各フィールドは10進数(8,5)です。まず、これは不当に大きなテーブルですか?私は本当に経験がないので、管理が難しい場合は、別の保管方法を考え始めるかもしれません。update SQLテーブルの現在の行

今はINSERTを使用して新しい行を作成してから、UPDATE(ループ内)を使用して480行のデータ値を新しい行に配置しようとしています。現在、各UPDATEは列全体を上書きしています。最後の行を変更する場合にのみ指定するにはどうすればよいですか?たとえば、列「id」、「field1」、「field2」、...を有するテーブル(「大きさ」)の場合:

sql UPDATE magnitude SET field1 = 3.14;これにより、「field1」列全体が変更されます。 = SQL UPDATEの大きさのSETフィールド1 idは= MAX(ID)

もちろん、私は完全にnoobの午前3.14:

のような何かをしようとしていました。この1つのことを動かして動かそうとしています...多くを見回しましたが、解決策を見つけることができませんでした。どんな助けもありがたい。

答えて

1

行を挿入して値を更新するのではなく、insertコマンドを使用して、入力された値を含む行全体を一度に挿入する必要があります。

I.e.

insert into tTable (column1, column2, ..., column n) values (datum1, datum2, ..., datum n) 

あなたのテーブルの定義は、あなたが挿入するとき、それはすなわち、あなたがそれを指定する必要はありません、あなたのためにそれを自動入力することを意味し、プロパティidentityとID列を持つ必要があります。

Re:スキーマの妥当性、私は480が多数の列であると思います。しかし、これは簡単な例で、システムがあなたに必要なパフォーマンスを提供できるかどうかを試してみることができます。

私は自分自身でこれをやっていた場合、私は多くの行の代わりに、多くの列がある別のソリューションのために行くだろう:

テーブルtDevice (ID int, Name nvarchar)

テーブルtData (ID int, Device_ID int, Value decimal(8,5))

を作成します - とをその後tDevice.ID

からDevice_ID背面の外部キーは、移入します

すべてのデバイスのための tDatatDevice

挿入1行のの

を挿入し、すべてのデバイス/データの組み合わせ - 行XNすなわち480、n個のデバイスの数

続いている、あなたが望むデータを照会することができますそのよう:

select * from tData join tDevice on tDevice.ID = tData.Device_ID

+0

私は今、単一の文のソリューションに取り組んでいます。唯一の問題はそれが長くなるということです。私はMax/mspで作業していますので、そのような長いシンボルを作成する際に制限があるかどうかはわかりません。 SQLのnoobであり、私はあなたの別の提案を理解しているかどうかはわかりませんが、ありがとうございます。 – twelti

+0

問題ありません。(デバイスID)、(現在のデバイスID)、<現在のデータ>} _ _}各_(デバイス){各(データ) 。 –

+0

ワンノート - あなたの質問に答えがある場合は、その横のチェックマークをクリックして回答をマークしてください。乾杯! –

関連する問題