2016-11-15 43 views
3

選擇我有一個表是這樣的:MYSQL通過URL

id url           title 
1  http://afef.com/abc/def/gje/qkd    hello 
2  http://afe.com/?a=3&b=2&fse=3    hello 
3  http://stackoverflow.com/fefw/sefac/fsg  hello-world 

從這裏id是主鍵,AUTO_INCREMENT和url是唯一的,但title可以重複。

從這個角度來看,當我添加新的URL這個表,如:

INSERT IGNORE INTO table (url, title) 
VALUES ('http://abcd.com/affefef/sfsaa/?a=3', 'this is title') 

然後,如果是新的URL插入,也沒關係。但是,如果它是重複的網址,它將被忽略,我無法知道重複的網址id是什麼。

id一定不能改變。

有什麼解決方案知道當我插入一個查詢重複URL的id

+0

在插入之前,可以使用select查詢來檢查URL是否存在。 – Afsar

+0

你可以使用'select insert' – Beginner

+0

@zan是不是不太長,比較很長的網址?我的意思是如果我使用'select',它會比較所有具有很長網址的行。 – user7159879

回答

2

有條件的檢查將有助於發現了重複的ID

檢查這個代碼:

mysql.query("SELECT id FROM table WHERE url = 'http://abcd.com/affefef/sfsaa/?a=3", function(error, result, field) { 
      if(error) { 
       exist(error); //No error 
      } else if (result) { 
       if (result.length > 0){ 
        console.log("Id exist:" + result['id']); 
       }else{ 

       // write your insert statement here 
       } 
      } 
     }); 
+0

lol他甚至沒有提到他的問題/ post – Beginner

+0

是一個PHP是啊我的壞,我現在是一個PHP Freak,我會將其更改爲節點版本,謝謝指出@NewbeeDev – Afsar

1

在一個唯一的查詢,我認爲這是不可能的。但是你可以使用Mysql函數「last_insert_id」來檢索已經插入的id。檢查它,你將能夠看到它是否是一個新的。 請參閱http://www.mysqltutorial.org/mysql-last_insert_id.aspx

您還可以查看「插入重複」。使用這個語法,如果它存在,它將更新該字段,或者如果找不到該鍵,則插入一個新的語法。

https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html