顯示具有 insert 標籤的文章。 顯示所有文章
顯示具有 insert 標籤的文章。 顯示所有文章

2014年11月13日 星期四

[SQL] 從 Table 中取出 Column 1 取資料並塞進 Column 2 方法 @ MySQL 5.6

有一張 table 儲存 field1, field2 為原始資料,由於資料尚未驗證,想要透過 REGEXP 驗證資料結果,這時就想到每次找都要驗證一次有點煩,所以就乾脆建立 field3,將驗證過的資料儲存起來。

至於解法方面,就單純把撈出來的資料再 INSERT 回去 :P 假設有一張 Table 名為 mTable,其中 key 為 field1, field2,而 field3 預設可以為空,目標則是將 field1 驗證過的資料儲存在 field3,未來使用時就可以透過 field3 來當作資料驗證。

新增資料用法:

INSERT INTO (field1, field2) VALUES ... ;

驗證 field1 資料,把正確格式擺進 field3:

INSERT mTable (field1, field2, field3)

SELECT field1, field2, field1 AS field3 FROM mTable WHERE field3 IS NULL AND field1 REGEXP '^[0-9A-Za-z]+$'

ON DUPLICATE KEY UPDATE

field3 = VALUES(field3)


如此一來,就完成驗證 :P

接著應該也可以嘗試 MySQL trigger 用法?不過,驗證資料這件事應該不要叫 DB 做才對 XD 只是...環境所限啊。

2014年1月22日 星期三

[SQL] MySQL: Insert or update @ Ubuntu 12.04

最近把玩 MySQL 了一下,想要做一些 daily result snapshot 的部分,想說就把結果存到一張表中使用,這樣下去就真的變成純玩 SQL 的生活了 XD

此時就會碰到把新增及更新的需求,好家在 MySQL 真威,筆記一下:

http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

mysql> INSERT INTO TableName ( Filed1, Filed2 ) VALUES ( 'Value1', 'Value2' ) ON DUPLICATE KEY UPDATE Field1=VALUES(Field1);

不過這次玩的比較多一點:

mysql> INSERT INTO TableName ( Filed1, Filed2 ) 

 SELECT Field1, Field2 FROM TableName2 

 ON DUPLICATE KEY UPDATE Field1=VALUES(Field1);