- 第一個問題,在同一行 兩列
create table test (word varchar(255),value int);
我怎麼可以更新表的時候,我們有相同的word
更新表時,表是分組並刪除使用MySQL
例如:<a,1> ,<b,1> , <a,1>
會添加新行<a,2>
並刪除這兩個<a,1>
行
2.第二個問題
如果表格有數百對,並且表格仍然分組(仍然插入),如何加快速度,我可以每隔1小時檢查一次嗎?並進行更新步驟?
MySQL或PHP代碼
create table test (word varchar(255),value int);
我怎麼可以更新表的時候,我們有相同的word
更新表時,表是分組並刪除使用MySQL
例如:<a,1> ,<b,1> , <a,1>
會添加新行<a,2>
並刪除這兩個<a,1>
行
2.第二個問題
如果表格有數百對,並且表格仍然分組(仍然插入),如何加快速度,我可以每隔1小時檢查一次嗎?並進行更新步驟?
MySQL或PHP代碼
如果我們的目標是有一個有word
獨特值,那麼我不會允許連續的插入與擺在首位的同一個字值的表,而只是更新現有的行。
我會通過添加一個UNIQUE KEY或PRIMARY KEY約束來強制執行word
列的唯一性。例如:
CREATE UNIQUE INDEX `test_ux1` ON `test` (`word`) ;
如果我想禁止NULL值word
,我想補充NOT NULL
到列定義。例如:
ALTER TABLE `test` MODIFY `word` VARCHAR(255) NOT NULL ;
或者,我可以代替定義word
是對錶的主鍵,而不是唯一的密鑰。這將強制唯一性以及不允許NULL值。
下面演示了這將如何工作,插入和更新行。
我們可以先嚐試插入一行。在這種情況下,該行已爲word
列一個「A」的值:
INSERT INTO `test` (`word`, `value`) VALUES ('a','1') ;
如果語句成功,我們已經插入一行。但是在word
列中使用主鍵或唯一鍵時,這會引發「重複鍵」錯誤,因爲表中已存在值爲'a'的行。
當發生這種情況時,我們知道我們需要執行現有行的UPDATE。例如:
UPDATE `test` t
SET t.`value` = IFNULL(t.`value`,0) + '1'
WHERE t.word = 'a'
MySQL提供的延伸部(INSERT ... ON DUPLICATE KEY UPDATE
語句),將在單個語句中執行相同的操作:
INSERT INTO `test` (`word`,`value`) VALUES ('a','1')
ON DUPLICATE KEY
UPDATE `value` = IFNULL(`value`,0) + VALUES(`value`)
這種設計似乎比執行插入更有效,插入隨後將通過刪除操作撤消的行。我寧願只有我需要的行,也不要添加額外的行,以後需要查詢和刪除。
您的問題和標籤不清楚! 如果您的表格有:''。你會添加''然後刪除什麼? –
@NguyễnHảiTriều刪除所有 –