2013-04-09 15 views
18

にそれを挿入...INSERTクエリチェックのレコードが存在する場合 - そうでない場合は、私はMySQLのテーブル<code>ip_list</code>を持って

+----+---------------+ 
| id | ip_addr | 
+----+---------------+ 
| 1 | 192.168.100.1 | 
| 2 | 192.168.100.2 | 
| 3 | 192.168.100.3 | 
| 4 | 192.168.100.4 | 
| 5 | 192.168.100.5 | 
+----+---------------+ 

私はip_addr列にないレコードことを追加します。私はip_addrテーブルに

192.168.100.6 
192.168.100.10 
192.168.100.11 
192.168.100.1 //already in column 
192.168.100.12 

を追加するレコードを、次のしている元

については それが列にすでにあるので、私は、192.168.100.1を追加する必要はありません。

したがって、INSERTのクエリで最初にレコードをチェックして挿入することは可能ですか?

現在、私はこれを次のようにしています。最初に私はSELECTのレコードと一致してからINSERTです。

しかし、私は1つのクエリでしかやりたくありません。

+0

は、他のテーブル/からのレコードです。 –

+1

ipカラムにユニークなインデックスを追加すると、 'INSERT .. ON DUPLICATE KEY'または' IGNORE'を挿入することができます – Dale

+0

'ip_addr'を' unique'フィールドにします –

答えて

18

。ここにあなたのテーブルに存在しないときにip_addressが挿入されます。あなたはInsert...on duplicate key update

OR

で交互にあなたも使用できること

INSERT INTO ip_list (ip_addr) 
SELECT * FROM (SELECT '192.168.100.1') AS tmp 
WHERE NOT EXISTS (
    SELECT ip_addr FROM ip_list WHERE ip_addr='192.168.100.1' 
); 
+1

Ekach番号yogesh bhau。 – Freelancer

+0

あなたの答えのための+1 upvote、ありがとう:) –

+2

@ YogeshSutharもう一度ありがとう:) –

8

ip_addrにユニークキーを追加してからINSERT IGNOREを使用してください。

あなたはまだUNIQUEのことを聞いていない場合、多分これは役立ちます:あなたは、クエリの下に使用することができますhttp://www.tutorialspoint.com/sql/sql-unique.htm

+0

あなたの答えのために+1 upvote、ありがとう –

4

私があなただったら、私は列にUNIQUE制約を強制し、

ALTER TABLE ip_list ADD CONSTRAINT IP_Unique UNIQUE(ip_addr) 
+0

あなたの答えのための+1 upvote、ありがとう –

3

を行うことができますReplace

+0

あなたの答えのための+1 upvote、ありがとう –

3

Try the MySQL INSERT IGNORE声明。

+0

あなたの答えのための+1 upvote、ありがとう –

関連する問題