2013-04-09 11 views
18

Ho una tabella mysql ip_list ...Inserire controllo query se esiste registrazione - In caso contrario, inserirla

+----+---------------+ 
| 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 | 
+----+---------------+ 

voglio solo aggiungere che i record che non sono in ip_addr colonna. Per ex

ho seguito record per aggiungere nella ip_addr tavolo

192.168.100.6 
192.168.100.10 
192.168.100.11 
192.168.100.1 //already in column 
192.168.100.12 

Non voglio aggiungere 192.168.100.1, perché è già nella colonna.

Quindi, è possibile che la query INSERT controlli prima i record e quindi li inserisca?

Attualmente, sto facendo questo con .. prima I SELECT i record poi corrispondono e quindi INSERT esso.

ma, voglio fare con una sola query.

+0

è il record dell'altro tavolo /. –

+1

È possibile aggiungere un indice univoco alla colonna ip e quindi si rimane con 'INSERT .. ON DUPLICATE KEY' o' INSERT IGNORE' – Dale

+0

rendere 'ip_addr' come campo' unique' –

risposta

18

È possibile utilizzare sotto query. Qui inserirà ip_address quando non è presente nella tabella.

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

numero Ekach yogesh bhau. – Freelancer

+0

+1 per risposta, grazie :) –

+2

@YogeshSuthar grazie ancora :) –

4

se fossi in te, mi imporre un vincolo UNIQUE sulla colonna,

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

+1 per la risposta, grazie –

3

Prova MySQL INSERT IGNORE dichiarazione.

+0

+1 upvote per la risposta, grazie –

Problemi correlati