sql >> Database >  >> RDS >> Mysql

MySQL alleen invoegen als een voorwaarde waar is

U kunt een WHERE . gebruiken clausule hiervoor. Converteer uw INSERT VALUES naar een INSERT SELECT en voeg een WHERE toe clausule.

Bijvoorbeeld,

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

Als de voorwaarde waar is, wordt de rij ingevoegd. Als de voorwaarde onwaar is, wordt de SELECT retourneert nul rijen en dus zal de INSERT nul rijen invoegen.

Als de bovenstaande query niet wordt uitgevoerd vanwege een syntaxisfout, kunt u, zoals @spencer7593 al zei, FROM DUAL toevoegen .

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

De DUAL table is in wezen een dummy-tabel die voorspelbare inhoud heeft en waarvan kan worden vertrouwd dat deze altijd ten minste één rij heeft .



  1. Werk een tabel bij en retourneer bijgewerkte rijen in mySQL

  2. CSV-gegevens laden naar een PostgreSQL-tabel

  3. Alternatief voor een MySQL tijdelijke tabel in Oracle

  4. MySQL (of PHP?) Groepsresultaten op veldgegevens