Команда MYSQL Получить заголовки столбцов, где и упорядочить по

0

Поэтому я хочу экспортировать из моей таблицы базы данных в CSV файл для работы, но моя проблема заключается в том, чтобы все правильные параметры.

  1. Во-первых, мне нужно экспортировать все заголовки столбцов в качестве первого столбца в файле csv,
  2. то оттуда мне нужно экспортировать все данные, которые мне нужны (ГДЕ...) и
  3. наконец, мне нужно заказать определенный столбец (ORDER BY...).

В настоящее время я могу получить только два из трех параметров. Итак, мое текущее выражение:

SELECT * 
FROM ( " ... all my rows names" 
       UNION ALL 
       ( SELECT * 
         from table_name 
         where Set_Type = "..." or ID = "..." ORDER by probability 
       )
     ) as tbl INTO OUTFILE '   ' FIELDS TERMINATED by ',';

Так что в настоящее время эта команда получает столбцы в первую строку, а часть WHERE Set_Type или ID - правильно. Однако он не будет сортировать вероятностную часть. Есть ли способ сделать все перед экспортом? Предпочтительно в одной команде, но если это несколько команд, то, что я делаю, каждый раз требуется определенный ID, поэтому команда будет отличаться.

Теги:
database
csv
plotly

1 ответ

0
Лучший ответ

Следующая ссылка имеет приятное объяснение:

Как сохранить запрос MySql с заголовками

Но чтобы вам не приходилось посещать сайт, пример, который они дают:

Чтобы включить имена столбцов (так, чтобы файл.CSV содержал заголовки в первой строке), вы можете жестко закодировать их в другом операторе SELECT, добавленном к остальной части запроса оператором UNION ALL.

/* Add column headers */
SELECT 'OrderId','CustomerID','EmployeeID','OrderDate','RequiredDate','ShippedDate','ShipVia','Freight','ShipName','ShipAddress','ShipCity','ShipRegion','ShipPostalCode','ShipCountry','OrderID','ProductId','UnitPrice','Quantity','Discount'

UNION ALL

/* Now the actual query */
SELECT o.OrderId, o.CustomerID, o.EmployeeID, o.OrderDate, o.RequiredDate, o.ShippedDate, o.ShipVia, o.Freight, o.ShipName, o.ShipAddress, o.ShipCity, o.ShipRegion, o.ShipPostalCode, o.ShipCountry, od.OrderID, od.ProductId, od.UnitPrice, od.Quantity, od.Discount 

FROM 'Orders' o  LEFT JOIN 'Order Details' od ON od.OrderID = o.OrderID 

/* Save the query results to a file */
INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

В принципе, выберите заголовки отдельно и используйте UNION ALL. Просто добавьте заказ в раздел запроса, в котором вы действительно загружаете свои данные.

пример

Так что этот пример работает для меня. Причина, по которой вы получали заголовки внизу, заключалась в том, что вы применяли предложение ORDER BY ко всему UNION. Вам нужно обернуть вторую часть UNION в скобках, чтобы применить ORDER BY ко всему внутри скобок.

Это работает для меня:

SELECT 'ID', 'Name', 'Description'

UNION ALL 

(SELECT id, name, description

FROM test.questions

ORDER BY name Asc

LIMIT 9999);

Немного больше информации с сайта MYSQL:

Однако использование ORDER BY для отдельных операторов SELECT ничего не говорит о порядке, в котором строки отображаются в конечном результате, поскольку UNION по умолчанию создает неупорядоченный набор строк. Поэтому использование ORDER BY в этом контексте обычно связано с LIMIT, так что оно используется для определения подмножества выбранных строк для извлечения для SELECT, хотя это не обязательно влияет на порядок этих строк в окончательный результат UNION. Если ORDER BY появляется без LIMIT в SELECT, он оптимизируется, потому что он не будет иметь никакого эффекта.

В принципе, вы ДОЛЖНЫ также применять LIMIT при применении ORDER BY, иначе это не повлияет.

  • 0
    прежде чем я попробую, просто простой вопрос. Что такое o в o.OrderId? Это просто имя базы данных или что-то еще?
  • 0
    это не работает Этот метод получает порядок по и где, но заголовки столбцов находятся в конце файла CSV.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню