在某些语言中(想到ColdFusion),您可以对先前查询的结果集运行查询。是否有可能做这样的事情在PHP(与MySQL作为数据库)?php可以查询以前查询的结果吗?
我有点想做的事:
$rs1 = do_query("SELECT * FROM animals WHERE type = 'fish'");
$rs2 = do_query("SELECT * FROM rs1 WHERE name = 'trout'");
在某些语言中(想到ColdFusion),您可以对先前查询的结果集运行查询。是否有可能做这样的事情在PHP(与MySQL作为数据库)?php可以查询以前查询的结果吗?
我有点想做的事:
$rs1 = do_query("SELECT * FROM animals WHERE type = 'fish'");
$rs2 = do_query("SELECT * FROM rs1 WHERE name = 'trout'");
有这样的PHP没有mysql的功能,但有一个为它更先进的substitute。
编辑:对于那些不知道查询查询是什么的人来说,这就是这样,有一些人会这样做。使用AND运算符是****不是****相同的东西!如果我希望结果在用户名='animuson'的脚本的一部分中,然后希望所有结果超出该查询的状态='1',那么使用AND运算符运行另一个查询是不合逻辑的,更符合逻辑地循环访问PHP中的先前结果。无需阅读关于他们为什么没有被优先考虑的评论就可以停止投票,这只是一种懒惰。如果您对所谈论的内容毫无头绪,那么您不应该首先投入或降低投票。
那么,你可能要做到这一点不沾DB:
while($t = mysql_fetch_array($rs1)){
if($t[name] == 'trout'){
echo 'This is the one we\'re looking for!';
break;
}
}
在PHP中,这将是非常低效的。你将不得不遍历每一行,并检查其name
是trout
。但是,有没有什么理由您不能这样做
SELECT * FROM `animals` WHERE `type` = 'fish' AND `name` = 'trout'
SQL?它会更快,更快。
使用AND关键字?
"SELECT * FROM animals WHERE type = 'fish' and name='trout'"
此外,您还可以使用LINQ的PHP http://phplinq.codeplex.com/
如果你想要查询鱼的结果然后加上鳟鱼的结果怎么办?然后你必须运行两个单独的查询... – animuson 2010-05-09 17:07:05
你也可以这样做
select morestuff from (select stuff from table where a = b) where c = d;
这只是一个更复杂和使用AND运算符更慢的方式。 – animuson 2010-05-09 17:22:41
没有真正回答你的问题,但对于使用SQL视图? – Sylvain 2010-05-09 17:22:43