Email里面收到朋友laopan的求助
laopan:
insert into HudsonResult(JobID,EnvironmentID,FirstSessionID,RerunSessionID,State,Desp,OtherInfo) values
((select ID from Hudson where Stream='A7510_R52_Integration' and State='N' and pakName='needCompile' and User='jinhaiz'),0,'N','N','N','smoke_test','')
如果相同的記錄不存在就執行上面這條insert命令,防止執行是insert兩次。
這個語句該怎么寫?
能明白不?
現在有個問題就是insert了2次同樣的記錄但是主鍵ID是不一樣的。
me :
如果是mysql數據庫的話:
1 如果你表中有唯一健的話,可以通過這個唯一健來進行賽選的。
2 如果沒有唯一健的話,你需要有判斷數據是否重復的條件,根據這個條件先select出來,看是否存在,如果不存在就insert,如果存在要么覆蓋要么就忽略掉不執行,這個過程需要多條sql語句,最好開啟事務來進行控制。
Mysql中有一個replace以及Insert into ..... on duplicate key update 來判斷對重復數據進行insert或者update的,但是這是依據主健或者唯一健來判斷的。你可以參考下下面這篇文章(//m.survivalescaperooms.com/article/47090.htm)。
laopan:
1.唯一鍵怎么篩選?現在的問題是唯一的不同是key不一樣,別的列都是一樣的。
me :
把表結構發給我,我看看 , 通過執行 命令 show create table HudsonResult; 可以得出表結構。
如果沒有唯一健的話,就不能從sql層面去判斷數據的唯一性,否則資源消耗太大了。需要從應用角度數據來源角度去驗證過濾。
laopan:
mysql> show create table HudsonResult;
+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table
新聞熱點
疑難解答