2016-11-15 7 views
3

によって選択:ここidから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 

主キーとAUTO_INCREMENTで、urlはユニークですが、titleを複製することができます。それは挿入する新しいURLであれば、それは問題ではありませんその後

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

、:この観点から

、私は同じように、このテーブルに新しいURLを追加します。しかし、重複したURLの場合は無視され、重複したURLのidが何であるか分かりません。

idは変更しないでください。

idを知りたい解決策はありますか?1つのクエリで重複したURLを挿入すると、

+0

挿入する前に、あなたは確認することができます。 – Afsar

+0

あなたは 'select insert'を使うことができます – Beginner

+0

@zan非常に長いURLを比較するには時間がかかりませんか?私は 'select'を使うと、非常に長いurlを持つすべての行を比較します。 – 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

笑彼は彼の質問/投稿でもPHPを言及していません – Beginner

+0

ええ、私は悪い、私は今PHPフリークです@NewbeeDevを指摘してくれてありがとう。 – Afsar

1

のみクエリ1で、私はそれは不可能だと思います。しかし、挿入されたIDを取得するために、関数last_insert_idを使用することができます。それをチェックすると、それが新しいものかどうかを見ることができます。 http://www.mysqltutorial.org/mysql-last_insert_id.aspx

また、「重複して挿入」を見ることもできます。この構文では、フィールドが存在する場合はフィールドを更新し、キーが見つからない場合は新しいフィールドを挿入します。そのURLが存在するか、選択クエリを使用していない場合は

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

関連する問題