gpt4 book ai didi

php - 保存 SELECT 结果以便在另一个 SELECT 中重用

转载 作者:行者123 更新时间:2023-11-29 06:44:12 25 4
gpt4 key购买 nike

有没有办法将 SQL 请求的结果不保存为数组,而是保存为表对象,以便在其他 SQL 请求中重用?

例如,让我保存请求的结果(标有“c++”的书籍)

 SELECT BOOK 
FROM BOOK_TAGS
WHERE TAG = 'C++';

然后,为了选择带有“c++”和“gamedev”标签的书籍,我不想再次滚动所有 BOOK_TAGS 表,我想从之前保存的结果中选择它们

类似的东西

SELECT BOOK 
FROM $TAGGED JOIN BOOK_TAGS USING(BOOK)
WHERE TAG = 'gamedev';

最佳答案

您可以通过创建一个表来临时保存几乎所有结果。

最简单的方法是:

CREATE TEMPORARY TABLE `blah` 
SELECT ....
;

这种方式的好处是临时表仅在当前数据库连接上可见,并在连接关闭时自动清除。但是,它们不能像普通表一样自由使用(没有自联接,不能在 UNION 中引用两次等......)

您可以使用非临时表,但它们在连接之间是可见的,因此您面临多个客户端同时操作它们的风险,并且它们是持久的,因此您必须确保自己清理它们(并且在之后它们会被正确清理)连接丢失也是如此)。

这两个方法的缺点是没有自动索引,因此通常您最终不得不更正式地创建此类“缓存”表,然后使用INSERT .... SELECT.通常,此时,除非您执行所有这些操作来修复现有单个查询中的性能问题,否则它会变得比它值得的麻烦更多。

对于像您所提出的这样简单的查询,保存这样的结果通常没有真正的好处。

关于php - 保存 SELECT 结果以便在另一个 SELECT 中重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50259969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com