Мне нужно выбрать столбец, только если этот столбец существует.
Я пробовал эту проверку следующим образом:
set @esisteIlCampo =
(
SELECT COUNT(*)
FROM
(
SELECT *
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'ventodelnord'
AND TABLE_NAME = 'impiegati'
AND COLUMN_NAME = 'Email'
) AS t
) > 0
Если дает 1, если столбец Email существует, и 0 если нет.
Тогда у меня есть запрос, чтобы использовать его:
SELECT
`i`.`IDImpiegato` AS `ID`,
`i`.`TelDomicilio` AS `Numero Di Telefono`,
CONCAT(`i`.`Nome`, ' ', `i`.`Cognome`) AS `Nome Completo`,
(
CASE WHEN
@esisteIlCampo = 1
THEN
(
SELECT impiegati.Email from impiegati limit 1
)
ELSE
(
SELECT "Campo Mancante"
)
END
) as "Email",
'Impiegati' AS `Tabella di provenienza`
FROM
`impiegati` `i`;
Но даже если @esisteIlCampo
равен 0, поэтому @esisteIlCampo = 1
оценивается как ложное, SELECT impiegati.Email from impiegati limit 1
запрос выполнен.
Как это возможно?