sql >> Databasteknik >  >> RDS >> Mysql

MySQL infoga endast om ett villkor är sant

Du kan använda en WHERE klausul för detta. Konvertera dina INSERT VALUES till ett INSERT SELECT och lägg till en WHERE klausul.

Till exempel,

INSERT INTO fields (field_name, control_type_id, needs_approval)
SELECT
'Array Photos', 3, 0
WHERE Condition;

Om villkoret är sant kommer den att infoga raden. Om villkoret är falskt visas SELECT kommer att returnera noll rader och därmed infogar INSERT noll rader.

Om frågan ovan inte körs på grund av ett syntaxfel kan du, som @spencer7593 nämnde, lägga till FROM DUAL .

INSERT INTO fields (field_name, control_type_id, needs_approval)
SELECT
'Array Photos', 3, 0
FROM DUAL
WHERE Condition;

DUAL Tabellen är i huvudsak en dummytabell som har förutsägbart innehåll och som man kan lita på att alltid har minst en rad .



  1. Varning:oväntat tecken i indata:(ascii=29) state=0 in

  2. Är det verkligen nödvändigt med citattecken runt tabeller och kolumner i en MySQL-fråga?

  3. INNER JOIN mysql

  4. Inaktivera automatisk uppdatering i Hibernate vid spolning på skrivskyddade synonymer