2012-07-19 53 views
4

我不知道這是否可以只用一個SQL查詢來完成,或者它需要一個PHP代碼 當CID是失蹤插入值

存在很多缺失值,我可以」 t手動處理

例如,這裏我沒有cid=1cid=6。 我想插入一行:

cid=1 tcp_sport='undefined' tcp_dport='undefined' 

cid=6 tcp_sport='undefined' tcp_dport='undefined' 

在我看來,我應該創建一個過程和線

之間插入

另一種解決方案,我thaught的是,我將創建一個帶有cid和未定義值的表格,然後將其與這一個連接起來,例如ifnull(tcp_sport,'')

你能幫我嗎?

enter image description here

+0

我不會將這些非信息添加到數據庫中,而是在使用此表的代碼中處理它。例如。加入時可以使用LEFT,RIGHT或OUTER連接來處理缺失的行。 – reinierpost 2012-07-19 17:01:14

回答

2

您需要使用PHP來自動完成這個。

<?php 

$link = mysql_connect("localhost", "mysql_user", "mysql_password"); 
mysql_select_db("database", $link); 

while($i < max_value_cid)//replace max_value_cid by the numeric maximum value of cid (SELECT MAX(cid) as max FROM table) 
{ 
    $result = mysql_query("SELECT * FROM `table` WHERE cid=".$i, $link); 
    if(mysql_num_rows($result) == 0) 
    mysql_query("INSERT INTO `table` VALUES ($i, NULL, NULL);", $link); 
    $i++; 
} 
?> 

做測試在執行前設置的採樣查詢並記得備份整個表,剛剛在的情況下。

4

首先,使用MAX爲獲取最大的ID。

SELECT MAX(cid) as max FROM table

然後,創建一個for循環檢查,如果存在各自的ID:

for ($i = 0; $i < $max; $i++) { 
    // $query = ... SELECT 1 FROM table WHERE cid = $i ... 
    // check if the number of rows for $query is greater than 0 
    // if not, INSERT INTO table VALUES ($i, DEFAULT, DEFAULT) 
} 
+0

我沒有1和6我有很多這樣的行 – 2012-07-19 16:26:51

+0

回答更新,享受。 – 2012-07-19 16:29:46

3

自動增量ID的整個想法是有一個值只能指向一件事。通過「在兩條線之間插入」你可能會讓自己面臨許多不可預見的問題。圖像你有另一個表,有一些值鏈接到此表的CID。如果該表已經具有CID = 1的條目,那麼當您插入CID = 1的新條目時,它將會加入到該支持記錄中。因此,真正屬於CID = 1的原始項目的數據將顯示可能無關的新項目。

您不會耗盡ID值(如果您接近整數限制,請將其切換爲bigInt),如果您可以避免使用ID,則不要重複使用ID。

+0

我無法避免他們我有46922線,我創建了一個左連接,這是一個'創建視圖警報爲選擇i​​.cid,i.ip_src,i.ip_dst,ifnull(t.tcp_sport,'') as tcp_sport,ifnull(t.tcp_dport,'')as tcp_dport from ipview i,tcpview t where i.cid = t.cid;'然後我有問題,因爲php我的管理員會崩潰,所以我應該只做這個 – 2012-07-19 16:34:45

+0

那個例子isn不要左連接......並且不應該造成任何書面問題。phpMyAdmin是一個工具,如果它不起作用,請使用其他工具,不要因爲工具錯誤而導致錯誤的數據庫決策。 – invertedSpear 2012-07-19 16:38:36

+0

是的,我混在了我的意思是加入,但在此之前,我試着離開加入這也是我的問題,我沒有得到正確的答案,但國家幫助我更多,所以我接受http://stackoverflow.com/questions/11560159/爲什麼創建視圖從一個左加入視圖不是很快 – 2012-07-19 16:49:56