php - 如何使用 MySQL SELECT 结果作为变量,然后在另一个 SELECT/UNION 语句中使用变量?

标签 php mysql select

我的标题并没有完全正确地总结我需要什么,但希望在我解释我正在尝试做的事情时它会更清楚。我正在尝试创建一个基于 PHP 的网页,该网页采用输入的关键字并使用它将选择的数据输出到 Excel 电子表格。

我的第一条语句使用关键字来查找它所指的“itemid”,它在自己的表中列出(键和 ID 的单独表并不理想,但我无法更改此):

SELECT items.itemid
FROM items
LEFT JOIN hosts ON hosts.hostid = items.hostid
WHERE hosts.host LIKE 'keyword';

这会返回一组数字,这些数字可能会返回 0 个结果或 10 个以上的结果。 现在我需要根据这些结果返回一系列结果。

例如:

SELECT items.name, data.clock, data.value
FROM data
LEFT JOIN items ON data.itemid = items.itemid
WHERE item.itemid = '<First result from previous statement>'
GROUP BY data.value
ORDER BY items.name, data.clock ASC
LIMIT 15
UNION ALL
SELECT items.name, data.clock, data.value
FROM data
LEFT JOIN items ON data.itemid = items.itemid
WHERE item.itemid = '<Second result from previous statement>'
GROUP BY data.value
ORDER BY items.name, data.clock ASC
LIMIT 15
...
So on for however many results there were
...
    SELECT items.name, data.clock, data.value
FROM data
LEFT JOIN items ON data.itemid = items.itemid
INTO OUTFILE '/file/location.csv' FIELDS ..ect
WHERE item.itemid = '<x result from previous statement>'
GROUP BY data.value
ORDER BY items.name, data.clock ASC
LIMIT 15

我会使用 WHERE IN 而不是 UNION ALL,但我需要将其限制为每个值 15 个结果,因为有些可能有多达 100,000 多行。

我在想也许可以将第一个语句的结果输​​入一个数组,然后将该数组用作第二个语句中的变量,但由于变量的数量每次都可能不同,我不确定如何我可以这样编写代码,使其重复代码必要的次数并将 INTO OUTFILE 放在正确的位置。

我在将我需要的信息表达出来时遇到了一些困难,所以如果有任何不清楚的地方请告诉我,我会尽快提供任何需要的信息。

提前感谢您的帮助。

最佳答案

如果您想使用多个查询来完成此操作,您可以使用 do while。我认为我们可以通过使用如下所示的单个查询来做到这一点。

SELECT items.name, data.clock, data.value
FROM data
LEFT JOIN items ON data.itemid = items.itemid
LEFT JOIN hosts ON hosts.hosstid = items.hostid
WHERE hosts.host LIKE 'keyword';
GROUP BY data.value
ORDER BY items.name, data.clock ASC
LIMIT 15;

关于php - 如何使用 MySQL SELECT 结果作为变量,然后在另一个 SELECT/UNION 语句中使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13347245/

相关文章:

php - 我应该重构这段代码吗?

php - foreach中使用mysql请求时,先select好,后不select

php - 我可以更新 INT 值 + 1 并返回新值吗?

mysql - 根据MySql中的多行选择一个值

php - 从 mysql select 中排除空数据

php - 找不到类 'AlgoliaSearch\Version'

PHP 和 Exchange Web 服务 (EWS) - 无法连接

php - ReactPHP 在循环内阻塞

sql-server - TSQL、CASE 中的 SELECT 语句在 COUNT

select - Go select 语句解决方法中的优先级