• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SQL - unikalny rekord

Object Storage Arubacloud
0 głosów
690 wizyt
pytanie zadane 5 stycznia 2018 w SQL, bazy danych przez Beka Nowicjusz (150 p.)
Witam

W jaki sposób mogę wstawić dane do tabeli w taki sposób aby polecenie sprawdzało czy dany rekord który chce wprowadzić  juz istnieje?

Np. chce wpisac rekord "kowalski" do kolumny "nazwiska" i polecenia SQL sprawdza czy taka dana już istnieje, i jeśli tak to nie wstawia jej ponownie?

2 odpowiedzi

0 głosów
odpowiedź 5 stycznia 2018 przez Tomasz90 Nałogowiec (25,140 p.)

Musisz dodać constrainta UNIQUE na tej kolumnie. Coś w tym stylu:
 

ALTER TABLE Osoby ADD UNIQUE (nazwiska);


Wtedy nie dodasz tego nazwiska drugi raz w innym wierszu

komentarz 5 stycznia 2018 przez Beka Nowicjusz (150 p.)
Czyli chodzi tu raczej o modyfikacje tabeli niz o odpowiednie zapytanie? A nie da sie tego zrobic tylko i wyłącznie zapytaniem sql?
komentarz 5 stycznia 2018 przez Tomasz90 Nałogowiec (25,140 p.)
Też się da tak zrobić. Musiałbyś użyć polecenia NOT EXISTS zaraz po klauzuli WHERE. W sumie nie podałeś jakiej bazy używasz to jedynie możesz to jako wskazówkę potraktować
komentarz 5 stycznia 2018 przez Beka Nowicjusz (150 p.)
Ale ja che wstawiać dane:

INSERT INTO tabela(nazwisko) VALUES ('Kowalski') wiec jak tutaj użyć IF NOT EXISTS?

Chodzi o polecenie w MySQL
komentarz 5 stycznia 2018 przez Tomasz90 Nałogowiec (25,140 p.)
INSERT INTO people(name) VALUES ('Kowalski');
INSERT INTO people(name) SELECT 'Kowalski' FROM people WHERE NOT EXISTS (SELECT name FROM people WHERE name = 'Kowalski');

 

0 głosów
odpowiedź 5 stycznia 2018 przez gromula Stary wyjadacz (10,070 p.)
Jeśli nie chcesz modyfikować kolumny, to po prostu zrób select'a gdzie sprawdzisz czy podany rekord już istnieje. Nie wiem na jakim poziomie jest to zadanie, ale domyślam się że to jakieś ćwiczenie.
Algorytm wyglądał by następująco

1. Przed dodaniem rekordu sprawdzasz czy taki rekord istnieje.
2. Select count(*) from user where naziwsko = '';
3. Jeśli count wyżej wymienionego selecta jest równy 0 wstawiasz rekord w przeciwnym wypadku odrzucasz i dajesz komunikat.
komentarz 5 stycznia 2018 przez Beka Nowicjusz (150 p.)
Nie jest to do końca to o co mi chodziło ale nie wpadłem na to a faktycznie też powinno zadziałać

Wielkie dzieki
komentarz 5 stycznia 2018 przez gromula Stary wyjadacz (10,070 p.)

Możesz również wykorzystać tabelę DUAL 
 


INSERT INTO `table` (value1, value2) 
SELECT 'stuff for value1', 'stuff for value2' FROM DUAL
WHERE NOT EXISTS (SELECT * FROM `table` 
      WHERE value1='stuff for value1' AND value2='stuff for value2') 
LIMIT 1 

 

Podobne pytania

0 głosów
0 odpowiedzi 210 wizyt
0 głosów
2 odpowiedzi 298 wizyt
+1 głos
3 odpowiedzi 137 wizyt
pytanie zadane 13 marca w SQL, bazy danych przez Ppaat Nowicjusz (130 p.)

92,634 zapytań

141,505 odpowiedzi

319,883 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...