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
Freigeben: 2023-05-27 18:49:13
nach vorne
10358 Leute haben es durchsucht

    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);
    Nach dem Login kopieren

    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);
    Nach dem Login kopieren

    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);
    Nach dem Login kopieren

    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!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage