sql >> Databáze >  >> RDS >> Mysql

Jak zjistím, zda hodnota již v tabulce existuje?

Použijte unique constraint . Pokuste se vložit/aktualizovat záznam a zachytit výjimku vyvolanou při porušení jedinečného omezení. Toto je jediný způsob, jak zaručit jedinečné e-mailové adresy; první kontrola a poté aktualizace jsou náchylné k problémům se souběžností, protože je možné, že někdo jiný aktualizuje svůj záznam na stejnou hodnotu, jakou se pokoušíte nastavit, těsně poté, co jste provedli kontrolu a před aktualizací záznamu.

Také:zjistěte, jak používat where -klauzule. Nyní získáváte VŠECHNY záznamy, iterujete je atd., což zabírá zbytečně mnoho zdrojů, trvá to příliš dlouho a je to jen obyčejné plýtvání. Pokud chcete zkontrolovat záznam odpovídající kritériím, napište:

Select foo, bar from table where baz = 123

Kde baz = 123 je vaším kritériem. Představte si, co by se stalo, když máte ve svém aktuálním nastavení 500 nebo dokonce 500 000 záznamů. Databáze by provedla váš dotaz, shromáždila VŠECHNY řádky z této databáze, přenesla je do vaší aplikace, kde by vaše aplikace iterovala všech 500 000 výsledků. Nebo požádáte DB, aby udělal to, v čem je dobrý (a proč to vůbec používáte):Dejte všechny záznamy, které odpovídají kritériu X. Získali byste 1 nebo žádný záznam (vzhledem k jedinečné omezení):1 ​​=některý záznam odpovídá vašemu kritériu, žádný =neexistují žádné záznamy. Ušetří přenos a "ruční prohlížení" 499 999 záznamů;-)




  1. Zkopírujte tabulky s jiným názvem sloupce MySQL

  2. Salesforce SOQL z Apache OpenOffice

  3. Výběr max. součtu dvou sloupců

  4. postgresql - sql - počet "skutečných" hodnot