我目前有一个 SQL select 语句,它成功执行了以下操作,它为我提供了过去两天的状态:
SELECT c.host, from_unixtime(a.clock), a.value, b.name
FROM
zabbix.history_uint a,
zabbix.items b,
zabbix.hosts c,
zabbix.groups g,
zabbix.hosts_groups hg
WHERE c.hostid = hg.hostid
AND g.groupid = hg.groupid
AND b.itemid=a.itemid
AND b.hostid=c.hostid
AND (b.name = "nodeAlive")
AND a.clock > 1539489622
AND c.host = "LONDON01";
输出:
+------------+------------------------+-------+-----------+
| host | from_unixtime(a.clock) | value | name |
+------------+------------------------+-------+-----------+
| LONDON01 | 2018-11-13 00:15:35 | 1 | nodeAlive |
| LONDON01 | 2018-11-14 00:15:35 | 1 | nodeAlive |
| LONDON01 | 2018-11-13 00:15:35 | 1 | nodeAlive |
| LONDON01 | 2018-11-14 00:15:35 | 1 | nodeAlive |
| LONDON01 | 2018-11-13 00:15:35 | 1 | nodeAlive |
| LONDON01 | 2018-11-14 00:15:35 | 1 | nodeAlive |
+------------+------------------------+-------+-----------+
我现在需要查找 MADRID03、TORONTO52、NEWYORK77 和超过 1000 个其他主机的状态。
是否可以从文本文件执行此操作并输出到另一个文件?如果是这样,语法将如何修改?
谢谢并赞赏
最佳答案
是不是就这么简单改变
AND c.host = "LONDON01"
至
AND c.host IN ("LONDON01", "MADRID03", "TORONTO52", "NEWYORK77", "TORONT9999", ...)
或者,也许将 1000 多个名称放入表中并执行 JOIN
会更容易?或者你已经在表中了?
您是否停下来思考输出中有多少行?
您可以(为了简化编码)更改
a.clock > 1539489622
到
a.clock > NOW() - INTERVAL 2 DAY
(如果您想在午夜开始,请使用 ... >= CURDATE() ...
)
似乎没有理由加入
到群组
。
关于mysql - SQL 语句读取 mySQL 数据库中 >1000 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53309105/