Fehler: Diskrepanzen bei der Spaltenanzahl in SELECT-Anweisungen
Beim Ausführen einer Abfrage mit mehreren SELECT-Anweisungen, z. B. einer UNION-Operation, ist dies unbedingt erforderlich um sicherzustellen, dass jede Anweisung genau die gleiche Anzahl von Spalten enthält. Andernfalls wird der Fehler „Fehler: Die verwendeten SELECT-Anweisungen haben eine andere Anzahl von Spalten“ angezeigt.
Um dieses Problem zu beheben, muss die Abfrage so umgeschrieben werden, dass jede SELECT-Klausel eine identische Anzahl hat von Spalten mit kompatiblen Datentypen. Zum Beispiel die bereitgestellte Abfrage:
SELECT * FROM friends LEFT JOIN users AS u1 ON users.uid = friends.fid1 LEFT JOIN users AS u2 ON users.uid = friends.fid2 WHERE (friends.fid1 = 1) AND (friends.fid2 > 1) UNION SELECT fid2 FROM friends WHERE (friends.fid2 = 1) AND (friends.fid1leidet unter diesem Fehler, da das erste SELECT 4 Spalten enthält („“, u1., u2.*), während das zweite SELECT nur eine einzelne Spalte zurückgibt („fid2 ").
Eine einfachere Umschreibung, die die beabsichtigte Funktionalität beibehält, ist:
SELECT f.*, u.* FROM FRIENDS AS f JOIN USERS AS u ON u.uid = f.fid2 WHERE f.fid1 = 1 AND f.fid2 > 1 UNION SELECT f.*, u.* FROM FRIENDS AS f JOIN USERS AS u ON u.uid = f.fid1 WHERE f.fid2 = 1 AND f.fid1Indem sichergestellt wird, dass beide SELECT-Anweisungen die gleiche Anzahl von Spalten mit übereinstimmenden Datentypen zurückgeben, kann die Abfrage ausgeführt werden, ohne dass der Spaltenanzahlfehler auftritt. Darüber hinaus werden unnötige äußere Verknüpfungen eliminiert, die auf der Grundlage des bereitgestellten Schemas überflüssig erscheinen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3