Я бегу несколько запросов SQL из командной строки следующим образом:печати MySQL имена столбцов для пустого набора результатов
cat my_query.sql | mysql --defaults-file=my_conf.cnf
Мне нужно напечатать имена столбцов, возвращает ли запрос какие-либо данные или нет. В настоящее время, когда нет данных для возврата, то есть когда запрос возвращает пустой набор результатов, эта команда ничего не печатает.
Например мой запрос:
-- id=-1 doesn't exist
SELECT col1, col2 FROM table WHERE id=-1
мне нужен этот запрос, чтобы вернуть
col1 col2
Вместо этого он ничего не возвращает. Можно ли это сделать, используя исключительно mysql и стандартные команды unix?
Спасибо.
Вы можете взять запрошенный запрос и UNION ALL, чтобы «фиктивный» SELECT эмулировал пустую строку после него. Результаты UNION используют типы данных и имена столбцов первого запроса UNION. – Uueerdo
Думаю, вы предлагаете добавить фиктивный SELECT, например SELECT '', ''. Это сработает, но затем оно добавит новую строку и несколько символов табуляции в конце результатов. Это не самое чистое решение, но оно может работать. Я искал вариант команды mysql для этого, но может и не быть. Благодарю. – burhan
Да, это не идеальное решение, но если у вас всегда есть это, вы знаете, что всегда игнорируете последнюю строку, или вы можете дать вашему манекену SELECT некоторые вопиющие значения «флага», такие как '' [cmdlinedummy] ''для строк. – Uueerdo