mysql命令获取列标题、where和order by

nlejzf6q  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(404)

所以我想从我的数据库表导出到一个.csv文件来使用,但我的问题是如何正确地获取以下所有参数。
首先,我需要将所有列标题导出为csv文件中的第一列,
然后从那里我需要导出所有我需要使用的数据(where…)和
最后,我需要订购某一列(orderby…)。
目前,我只能得到三个参数中的两个正确。所以我现在的说法是:

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 ',';

因此,当前,该命令将列放入第一行,并将类型或id部分设置为正确。但是,它不会对概率部分进行排序。在出口之前有什么办法我可以做任何事情吗?最好是在一个命令中,但如果是多个命令,我所做的每一次都需要一个特定的id,因此命令将不同。

0lvr5msh

0lvr5msh1#

下面的链接有一个很好的解释:
如何保存带有标题的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。只需将orderby添加到查询的实际获取数据的部分。

示例

所以这个例子对我很有用。之所以将标题放在底部,是因为要将ORDERBY子句应用于整个联合体。您需要将union的第二部分 Package 在方括号中,以便仅将order by应用于方括号内的所有内容。
这对我很有用:

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

UNION ALL 

(SELECT id, name, description

FROM test.questions

ORDER BY name Asc

LIMIT 9999);

mysql站点的更多信息:
但是,对单个select语句使用ORDERBY并不表示行在最终结果中的显示顺序,因为union在默认情况下会生成一组无序的行。因此,在这种情况下,order by的使用通常与limit结合使用,因此它用于确定要为select检索的选定行的子集,即使它不一定影响这些行在最终联合结果中的顺序。如果order by在select中没有限制地出现,它将被优化掉,因为它无论如何都没有效果。
基本上,你也必须在申请订单时申请限额,否则它不会生效。

相关问题