2017-03-08 48 views
0

我是SQL新手,我遇到了一些麻煩。如何插入到現有的表列值

比方說,我有一個表,名爲數據,有兩列,classname

我想創建列math如果它不存在,並給它一個值John

我可以做到這一點:

INSERT INTO data VALUES ('math','John') 

但是,如果我改變JohnSteve,我想math擁有的"John","Steve"值。

但相反,它會創建另一行"math",其值爲"Steve",如何將此插入插入同一列?

感謝

+1

請給出樣本數據和預期輸出。 –

+0

我做過,樣本數據是名爲「數學」的列,其中有兩個值「John」和「Steve」。預期輸出是名爲「數學」的單列,其中有兩個值「John」和「Steve」。但現在,它創建了兩列,分別命名爲「數學」,值分別爲「John」和「Steve」 – Will

+0

在插入後發佈您想要的實際表。您的描述不清楚。 –

回答

0

我會強烈建議存儲在你的表名的CSV列表。 CSV很難查詢,更新和維護。其實,有什麼都錯了你目前的做法:

class | name 
math | John 
math | Steve 

數據以這種格式可以很容易地查詢,因爲這是關係。如果您需要添加,更新或刪除與某個班級相關的姓名,則無需處理CSV即可成爲一項記錄。請注意,如果你真的需要一個CSV表示,仍然可以做到這一點使用SQLite的GROUP_CONCAT()功能:

SELECT class, GROUP_CONCAT(name, ',') AS names 
FROM yourTable 
GROUP BY class 
+0

這會返回以「,」分隔的所有內容,無論如何要使它產生一個列表或元組? – Will

+0

@將更新您的問題以顯示「list」或「tuple」的含義。 –

+0

聽起來像Python:'list = [row [0] for c.execute(「SELECT name FROM names WHERE class ='math'」)]' –

0

不能完全肯定的SQLite但正常的命令通常是這樣的:

ALTER TABLE TABLE_NAME ADD column_name數據類型

然後插入到