mysql - SQL 语句读取 mySQL 数据库中 >1000 个值

标签 mysql database select mariadb

我目前有一个 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/

相关文章:

database - 如何连接同一台Sybase服务器上不同数据库中的表

mysql - 如何在mysql中执行String然后插入临时表?

Php 从唯一的 SQL 行中检索一组值并将其显示在 HTML 选项列表中

javascript - 发送多个 SKU 和数量以从 php strip 化

database - 使用 SQLite 触发器时插入速度缓慢

php - 如何在没有API的情况下从网站获取数据

SQL:一个查询中有两个选择语句

php - 在准备好的语句 PDO PHP 中绑定(bind)值数组

php - 对我在用 PHP 运行的 Web 服务器中缓冲数据有什么建议吗?

mysql - 关闭 ExecutorService 'applicationTaskExecutor'