"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo resolver el \"Error: las declaraciones SELECT utilizadas tienen un número diferente de columnas\" en operaciones UNION?

¿Cómo resolver el \"Error: las declaraciones SELECT utilizadas tienen un número diferente de columnas\" en operaciones UNION?

Publicado el 2024-11-10
Navegar:365

How to Resolve \

Error: discrepancias en el recuento de columnas en declaraciones SELECT

Al ejecutar una consulta que implique varias declaraciones SELECT, como una operación UNION, es imperativo para garantizar que cada declaración contenga exactamente el mismo número de columnas. De no hacerlo, se producirá el error "Error: las declaraciones SELECT utilizadas tienen un número diferente de columnas".

Para resolver este problema, es necesario reescribir la consulta de manera que cada cláusula SELECT tenga un número idéntico de columnas con tipos de datos compatibles. Por ejemplo, la consulta proporcionada:

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 

sufre este error ya que el primer SELECT contiene 4 columnas ("", u1., u2.*), mientras que el segundo SELECT solo devuelve una sola columna ("fid2 ").

Una reescritura más sencilla que conserva la funcionalidad prevista es:

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 

Al asegurarse de que ambas declaraciones SELECT devuelvan el mismo número de columnas con tipos de datos coincidentes, la consulta se puede ejecutar sin encontrar el error de recuento de columnas. Además, elimina las uniones externas innecesarias, que parecen redundantes según el esquema proporcionado.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3