[英]SQL: What is the best way to insert and query a list of organized data?
這是一個相當簡單的用例,我認為必須有一個“標准”解決方案,但我找不到任何示例。
我對SQL還是很陌生(剛剛開始學習),所以也許顯而易見。
假設我有三個數據數組:
seconds: [0, 1, 2, 3, 4, 5, 6]
height: [0, 10, 20, 25, 20, 10, 0]
speed: [10,10, 5, 0, -5,-10, 0]
我將獲得更多的高度和速度數組,但它們都具有相同的秒/時間戳。
問題:
再次,我認為這個問題應該很簡單,這很愚蠢,但是如果在SQL中這樣的事情不容易實現,我想知道它是否是我應該使用的數據庫。
謝謝
感謝黏合劑的答案
我從Excel之類的角度考慮問題,您永遠不想以列格式向下存儲數據。 但這現在意義非凡,因為您具有sql的功能來生成查詢,無論您希望查詢是什么。 您可以按照他的答案所建議的那樣放置數據,並且可以輕松查詢所需的數據。
萬分感謝!
您不必創建具有0、1、2、3等列的表。不過,我不建議有6列。 盡管這可能會在您遇到的情況下起作用,但這只是不良的架構設計。 而不是將整個試用版存儲在一行中,每一行實際上應該只存儲一個秒。 這樣,將來增加更多的秒數是一個相當簡單的過程
遵循此原理,這是一個粗略的方案
HeightSpeedEntry
_______________
TrialId PK int
Seconds PK int
Height PK int
Speed PK int
要創建此表:
CREATE TABLE HeightSpeedEntry(
TrialId int,
Seconds int,
Height int,
Speed int,
CONSTRAINT pk_trial_seconds PRIMARY KEY (TrialId, Seconds));
逐行插入數據
INSERT INTO HeightSpeedEntry(TrialId, Seconds, Height, Speed)
VALUES (1, 0, 0, 10)
INSERT INTO HeightSpeedEntry(TrialId, Seconds, Height, Speed)
VALUES (1, 1, 10, 10)
檢索一組記錄
SELECT * FROM HeightSpeedEntry
WHERE TrialId = 1
ORDER BY Seconds
如何以非手動方式將數組實際傳遞給insert語句取決於數組的來源。
只是為了澄清一下,我們在這里所做的就是從中轉換您的記錄:
seconds: [0, 1, 2, 3, 4, 5, 6]
height: [0, 10, 20, 25, 20, 10, 0]
speed: [10,10, 5, 0, -5,-10, 0]
對此:
HeightSpeedEntry: [1, 0, 0, 10 ]
HeightSpeedEntry: [1, 1, 10, 10 ]
HeightSpeedEntry: [1, 2, 20, 5 ]
HeightSpeedEntry: [1, 3, 25, 0 ]
HeightSpeedEntry: [1, 4, 20, -5 ]
HeightSpeedEntry: [1, 5, 10, -10]
HeightSpeedEntry: [1, 6, 0, 0 ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.