sql >> Database teknologi >  >> RDS >> Mysql

MySQL indsæt kun, hvis en betingelse er sand

Du kan bruge en WHERE klausul herfor. Konverter dine INSERT VALUES til en INSERT SELECT og tilføj en WHERE klausul.

For eksempel,

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

Hvis betingelsen er sand, indsætter den rækken. Hvis betingelsen er falsk, vises SELECT returnerer nul rækker, og INSERT vil således indsætte nul rækker.

Hvis forespørgslen ovenfor ikke kører på grund af en syntaksfejl, kan du, som @spencer7593 nævnte, tilføje FROM DUAL .

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

DUAL tabel er i bund og grund en dummy-tabel, der har forudsigeligt indhold og kan stole på, at den altid har mindst én række .



  1. MySQL/PHP:Sådan får du kolonner og tilhørende data

  2. Hvordan opretter jeg en visning i MySQL?

  3. PostgreSQL:en gyldig variabel tildelingsprøve?

  4. oracle Update sammenligner Varchar