2013-04-09 14 views
18

Mam tabeli mysql ip_list ...Insert check zapytanie czy rekord istnieje - Jeśli nie, włóż ją

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

Chcę tylko dodać, że dokumenty, które nie są w ip_addr kolumnie. ex

Mam następujące zapisy dodać w ip_addr tabeli

192.168.100.6 
192.168.100.10 
192.168.100.11 
192.168.100.1 //already in column 
192.168.100.12 

Nie chcę, aby dodać 192.168.100.1, ponieważ jest już w kolumnie.

Czy to możliwe, że zapytanie INSERT najpierw sprawdza rekordy, a następnie wstaw je?

Obecnie robię to z .. najpierw I SELECT rekordy następnie dopasować go, a następnie INSERT go.

, ale chcę zrobić tylko z jednym zapytaniem.

+0

jest rekordem z drugiej tabeli /. –

+1

Możesz dodać unikalny indeks do kolumny IP, a następnie pozostawisz 'INSERT .. ON DUPLICATE KEY' lub' INSERT IGNORE' – Dale

+0

make 'ip_addr' jako' unikalne' field –

Odpowiedz

18

Możesz skorzystać z poniższego zapytania. Tutaj wstawi ip_address, gdy nie ma go w twojej tabeli.

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 number yogesh bhau. – Freelancer

+0

+1 przegłosuj dla twojej odpowiedzi, dzięki :) –

+2

@YogeshSuthar dzięki jeszcze raz :) –

4

gdybym cię, wymusić UNIQUE ograniczenie na kolumnie

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

+1 przegłosuj dla twojej odpowiedzi, dziękuję –

3

Wypróbuj MySQL INSERT IGNORE.

+0

+1 przegłosuj dla twojej odpowiedzi, dziękuję –

Powiązane problemy