Heim >Datenbank >MySQL-Tutorial >So lösen Sie den MySQL-Fehler. Die Unterabfrage gibt mehr als eine Zeile zurück

So lösen Sie den MySQL-Fehler. Die Unterabfrage gibt mehr als eine Zeile zurück

PHPz
PHPznach vorne
2023-05-27 18:49:1310359Durchsuche

    MySQL-Fehler: Unterabfrage gibt mehr als 1 Zeile zurück

    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.

    Der Fehler wird wie folgt gemeldet

    So lösen Sie den MySQL-Fehler. Die Unterabfrage gibt mehr als eine Zeile zurück

    Lösung

    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 ...

    Fehlercode: 1242Unterabfrage gibt mehr als 1 Zeile zurück

    Ausführungszeit: 0,009 Sek. Übertragungszeit: 0,002 Sek. Gesamtzeit: 0,012 Sek.

    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);

    Die 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);

    Das 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!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen