Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql查询是否可以扩展为另一个查询的子查询?_Mysql_Inheritance - Fatal编程技术网

mysql查询是否可以扩展为另一个查询的子查询?

mysql查询是否可以扩展为另一个查询的子查询?,mysql,inheritance,Mysql,Inheritance,假设我们得到的问题1如下: select * from users where status = 1 这将输出一些结果,我可以缓存这些数据,现在第二个查询是: select * from users where status = 1 and point >= 50 正如您所看到的,第二个查询在某种程度上是第一个查询的子查询,它返回最后一个查询数据的子集,并具有公共代码,有没有一种方法可以通过使用第一个查询结果来加快第二个查询,并使用第一个查询代码缩短代码?是的,您使用嵌套查询: sel

假设我们得到的问题1如下:

select * from users where status = 1
这将输出一些结果,我可以缓存这些数据,现在第二个查询是:

select * from users where status = 1 and point >= 50

正如您所看到的,第二个查询在某种程度上是第一个查询的子查询,它返回最后一个查询数据的子集,并具有公共代码,有没有一种方法可以通过使用第一个查询结果来加快第二个查询,并使用第一个查询代码缩短代码?

是的,您使用嵌套查询:

select x.*
from
(
    select * from users
    where status = 1
) as x
where x.point >= 50;

您好,如果您有mysql 8.0,您可以使用。我想这会对你有所帮助。不,你不能用不同的查询从缓存中查询。谢谢你的回复,这会加快查询速度吗?我的意思是,查询似乎将再次运行,是吗?是的,这是一个新的查询,因此实际上它与“从状态为1且点>=50的用户中选择*”相同。您不会重用来自上一个查询的结果。如果你想过滤在第一个查询中得到的结果,你应该在你的代码中这样做。我认为这不会给你更多的速度,但是MySQL可能已经缓存了第一个查询(嵌套在第二个查询中)并在第二个查询中使用了该缓存,但我不确定。您可以对此进行测试,但除非您有一个大的数据集(并且在“状态”列上没有索引),否则我想这不会有太大的区别。