MySQL-Fehler: SQLSTATE[21000]: Kardinalitätsverletzung: 1242 Unterabfrage gibt mehr als 1 Zeile zurück
Der Fehler bedeutet, dass das Ergebnis der Unterabfrage mehr als eine Zeile umfasst.
Nehmen Sie diese SQL-Anweisung als Beispiel
select * from table1 where table1.colums=(select columns from table2);
1) Wenn sie wiederholt geschrieben wird, entfernen Sie die doppelten Daten. Beim Schreiben von Daten können Sie logische Beurteilung (PHP) oder Fremdschlüssel (MySQL) verwenden, um das wiederholte Schreiben von Daten zu verhindern.
(Was mir in der tatsächlichen Entwicklung begegnet ist, war die Situation des wiederholten Schreibens von Daten. Ich habe zwei identische Daten in der Datenbank gefunden, die nicht den ursprünglichen Geschäftsanforderungen entsprachen.)
2) Fügen Sie der bedingten Anweisung der Unterabfrage Limit 1 hinzu. Finden Sie einfach eine, die die Bedingungen erfüllt Warnungen
Abfrage: SELECT t.id, DATE_FORMAT( t.statisTime, '%Y-%m-%d %H:%i:%s' ) statisTime, (SELECT `id` FROM t_truck_info WHERE id = t.plateId ...
Fehlergrund
Beim Schreiben von Abfrage-SQL-Anweisungen wird eines der Felder abgerufen aus einer anderen Tabelle
select * from table1 where table1.colums=(select columns from table2 limit 1);Nach dem Login kopierenDie Abfrage zeigt, dass es sich bei num um mehrere Datenelemente handelt, während das Ergebnis der äußeren Abfrage erfordert, dass num ein Datenelement ist
Lösung
select * from table1 where table1.colums=any(select columns from table2);Nach dem Login kopierenDas obige ist der detaillierte Inhalt vonSo lösen Sie den MySQL-Fehler. Die Unterabfrage gibt mehr als eine Zeile zurück. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!