仅在MySQL中显示查询结果

时间:2013-07-15 14:36:52

标签: mysql alias output

如何执行MySQL查询并避免在输出中使用查询或别名?我尝试了“”(空字符串)作为别名但我没有得到预期的结果,因为我最后得到一个空行。

编辑添加了一些代码

SELECT 
CONCAT("{\"counters\":{",
-- Total memory used calculation
    "\"mysql.total_memory\":",
    ((@@read_buffer_size + @@sort_buffer_size) * @@max_connections + @@key_buffer_size),",",
-- other monitored server status variables 
    GROUP_CONCAT(
        CONCAT("\"mysql.",LCASE(VARIABLE_NAME),"\":",VARIABLE_VALUE)
    )
,"}}")
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE VARIABLE_NAME = "SLOW_QUERIES"
OR VARIABLE_NAME="Qcache_lowmem_prunes"
OR VARIABLE_NAME="SELECT_FULL_JOIN"
OR VARIABLE_NAME="SELECT_RANGE_CHECK"
OR VARIABLE_NAME="SELECT_SCAN"
OR VARIABLE_NAME="SELECT_RANGE";

我希望将json格式作为输出。我需要这个作为另一个软件的输入。此软件不接受空白行(压缩的json格式)。

edit2:添加了输出

CONCAT("{\"counters\":{",

    "\"mysql.total_memory\":",
    ((@@read_buffer_size + @@sort_buffer_size) * @@max_connections + @@key_buffer_size),",",

    GROUP_CONCAT(
        CONCAT("\"mysql.",LCASE(VARIABLE_NAME),"\":",VARIABLE_VALUE)
    )
,"}}")
{"counters":{"mysql.total_memory":39108608,"mysql.qcache_lowmem_prunes":0,"mysql.select_full_join":0,"mysql.select_range":0,"mysql.select_range_check":0,"mysql.select_scan":84,"mysql.slow_queries":0}}

我想删除“CONCAT(...)”部分,只将结果作为输出。

2 个答案:

答案 0 :(得分:10)

我想我知道你的意思,你只希望打印查询的结果没有框和标题,因此以下列方式启动你的mysql客户端:mysql -uroot -p -s -r -N

这会压缩查询周围的框以及列名称的输出。您还可以使用-e参数执行查询,然后在将查询结果打印到stdout后退出mysql客户端,在脚本中使用它时这是usefule。请参阅下面(简化的)示例:

[root@db1 ~]# mysql -uroot -p******* -s -r -N -e "select 1+1"
2
[root@db1 ~]# 

答案 1 :(得分:0)

必须命名结果集中的每一列。但是你可以用任何你想要的显式(非空)别名来命名。正如SELECT Syntax所述:

  

可以使用 select_expr AS alias_name 指定别名。

因此,在您的情况下:

SELECT CONCAT(
         '{"counters":{',
           -- Total memory used calculation
           '"mysql.total_memory":', (
                (@@read_buffer_size + @@sort_buffer_size) * @@max_connections
               + @@key_buffer_size
             ),',',

           -- other monitored server status variables 
           GROUP_CONCAT('"mysql.',LCASE(VARIABLE_NAME),'":',VARIABLE_VALUE),
         '}}'
       ) AS my_column   -- assign your chosen alias here <===================
FROM   INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE  VARIABLE_NAME IN (
         'SLOW_QUERIES',
         'Qcache_lowmem_prunes',
         'SELECT_FULL_JOIN',
         'SELECT_RANGE_CHECK',
         'SELECT_SCAN',
         'SELECT_RANGE'
       );