sql >> Database >  >> RDS >> Mysql

Fix "ERROR 3942 (HY000):elke rij van een VALUES-clausule moet ten minste één kolom hebben" bij gebruik van de VALUES-instructie in MySQL

Als u een foutmelding krijgt met de tekst "ERROR 3942 (HY000):Elke rij van een VALUES-clausule moet ten minste één kolom hebben ” in MySQL, zou u een lege rij-constructor kunnen hebben bij gebruik van de VALUES verklaring.

Om dit probleem op te lossen, moet u ervoor zorgen dat u ten minste één waarde heeft in elke ROW() clausule binnen de VALUES verklaring.

Voorbeeld van de fout

Hier is een voorbeeld van code die resulteert in de fout:

VALUES ROW();

Resultaat:

ERROR 3942 (HY000): Each row of a VALUES clause must have at least one column, unless when used as source in an INSERT statement.

Dit is een heel eenvoudig voorbeeld, maar de eenvoud laat ons precies zien wat er mis ging. Ik gebruik de VALUES statement, maar met een lege ROW() clausule.

Oplossing

Om het probleem op te lossen, hoeven we alleen maar ten minste één waarde op te geven voor de ROW() clausule:

VALUES ROW('Jet');

Resultaat:

+----------+
| column_0 |
+----------+
| Jet      |
+----------+

Gewoonlijk zouden we meer dan één waarde opnemen in elke ROW() clausule, en misschien meer dan één ROW() clausule. Bijvoorbeeld:

VALUES ROW(1, 'Jet', 'Black'), ROW(2, 'Faye', 'Valentine');

Resultaat:

+----------+----------+-----------+
| column_0 | column_1 | column_2  |
+----------+----------+-----------+
|        1 | Jet      | Black     |
|        2 | Faye     | Valentine |
+----------+----------+-----------+

Hoe dan ook, we moeten ten minste één waarde opgeven voor elke ROW() clausule.


  1. Hoe kan ik meer dan 1 record per dag selecteren?

  2. Voeg alle waarden van een tabel in een andere tabel in SQL in

  3. SQLite-limiet

  4. Active Data Guard Physical Standby instellen in RAC One Node Architecture - Deel 1