Heim  >  Artikel  >  Datenbank  >  Wie behebe ich „Fehler: Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten“ in UNION-Operationen?

Wie behebe ich „Fehler: Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten“ in UNION-Operationen?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 12:02:26189Durchsuche

How to Resolve

Fehler: Diskrepanzen in 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 unterschiedliche 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. Beispielsweise weist 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.fid1 < 1)
ORDER BY RAND()
LIMIT 6;

diesen Fehler auf, da das erste SELECT 4 Spalten enthält („“, u1., u2.*), während das zweite SELECT nur 4 Spalten enthält gibt eine einzelne Spalte („fid2“) zurück.

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.fid1 < 1
ORDER BY RAND()
LIMIT 6;

Indem sichergestellt wird, dass beide SELECT-Anweisungen die gleiche Anzahl von Spalten mit Übereinstimmung zurückgeben Bei Datentypen kann die Abfrage ausgeführt werden, ohne dass der Spaltenanzahlfehler auftritt. Darüber hinaus werden unnötige äußere Verknüpfungen eliminiert, die basierend auf dem bereitgestellten Schema überflüssig erscheinen.

Das obige ist der detaillierte Inhalt vonWie behebe ich „Fehler: Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten“ in UNION-Operationen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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