«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как устранить ошибку «Ошибка: используемые операторы SELECT имеют разное количество столбцов» в операциях UNION?

Как устранить ошибку «Ошибка: используемые операторы SELECT имеют разное количество столбцов» в операциях UNION?

Опубликовано 10 ноября 2024 г.
Просматривать:951

How to Resolve \

Ошибка: несоответствия в количестве столбцов в операторах SELECT.

При выполнении запроса, включающего несколько операторов SELECT, например операции UNION, это обязательно чтобы гарантировать, что каждый оператор содержит одинаковое количество столбцов. Невыполнение этого требования приведет к ошибке «Ошибка: используемые операторы SELECT имеют разное количество столбцов».

Чтобы решить эту проблему, запрос необходимо переписать таким образом, чтобы каждое предложение SELECT имело одинаковый номер. столбцов с совместимыми типами данных. Например, предоставленный запрос:

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 

страдает от этой ошибки, поскольку первый SELECT содержит 4 столбца («», u1., u2.*), а второй SELECT возвращает только один столбец («fid2 ").

Более простая перезапись, сохраняющая намеченную функциональность:

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 

Убедившись, что оба оператора SELECT возвращают одинаковое количество столбцов с совпадающими типами данных, запрос может быть выполнен без возникновения ошибки количества столбцов. Кроме того, он устраняет ненужные внешние соединения, которые кажутся избыточными на основании предоставленной схемы.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3