-3

如何执行 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 格式)。

编辑2:添加输出

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(...)”部分,只将结果作为输出。

4

2 回答 2

11

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

这将抑制查询周围的框以及列名的输出。您还可以使用 -e 参数执行查询,然后在将查询结果打印到标准输出后退出 mysql 客户端,这在脚本中使用时很有用。请参见下面的(简化的)示例:

[root@db1 ~]# mysql -uroot -p******* -s -r -N -e "select 1+1"
2
[root@db1 ~]# 
于 2013-07-15T15:15:03.390 回答
0

结果集中的每一列都必须命名。但是您可以使用您希望的任何显式(非空)别名来命名。如SELECT语法中所述:

select_expr可以使用 为A指定别名。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'
       );
于 2013-07-15T14:55:20.623 回答