【问题标题】:Can php query the results from a previous query?php可以查询上一个查询的结果吗?
【发布时间】:2011-02-17 09:52:35
【问题描述】:

在某些语言中(想到了 ColdFusion),您可以对上一个查询的结果集运行查询。是否可以在 php 中做类似的事情(以 MySQL 作为数据库)?

我有点想做:

$rs1 = do_query( "SELECT * FROM animals WHERE type = 'fish'" );
$rs2 = do_query( "SELECT * FROM rs1 WHERE name = 'trout'" );

【问题讨论】:

  • 没有真正回答您的问题,但是使用 SQL VIEW 代替呢?

标签: php mysql search resultset


【解决方案1】:

PHP 没有这样的 MySQL 函数,但是有一个更高级的substitute

编辑:对于那些不知道什么是查询查询的人来说,正是这个,有些人这样做是有目的的。使用 AND 运算符是****不****同一件事!如果我想要脚本的一部分的用户名 ='animuson' 的结果,然后想要状态 ='1' 的查询中的所有结果,那么我使用 AND 运算符运行另一个查询是不合逻辑的,它是循环遍历 PHP 中的先前结果更合乎逻辑。停止投票而不阅读 cmets 为什么他们一开始就没有投票,这只是懒惰。如果您不知道在谈论什么,那么您首先不应该赞成或反对。

【讨论】:

    【解决方案2】:

    好吧,你可能想在不接触数据库的情况下这样做:

    while($t = mysql_fetch_array($rs1)){
        if($t[name] == 'trout'){ 
            echo 'This is the one we\'re looking for!'; 
            break;
        }
    }
    

    【讨论】:

      【解决方案3】:

      在 PHP 中,这将是非常低效的。您必须遍历每一行并检查其name 是否为trout。但是,有什么理由不能做吗

      SELECT * FROM `animals` WHERE `type` = 'fish' AND `name` = 'trout'
      

      在 SQL 中?它会快得多。

      【讨论】:

      • 我认为您不了解查询查询的目的。
      • 在 PHP 的内存中搜索它会比再次敲击大型数据库更快吗?不过我可能错了。
      • @Robus:可能。如果您在最初的 fish 查询中得到 100 个结果中的 1000 个,那么在 PHP 中进行搜索要比使用附加查询再次筛选 1000 个结果要好得多。
      • @Robus SQL 已针对与数据库中的数据进行交互进行了优化,因此可能不会,考虑到正确索引的数据库。
      • @waiwai933 我想这主要取决于运气。我的意思是查看我在答案中编写的函数,它可能会在第一个循环中获得所需的行 - 使其比数据库快得多。但话又说回来,它可能是最后一个,在这种情况下,数据库很可能会更快。
      【解决方案4】:

      你也可以这样做

      select morestuff from (select stuff from table where a = b ) where c = d;
      

      【讨论】:

      • 这只是使用 AND 运算符的一种更复杂、更慢的方式。
      【解决方案5】:

      使用 AND 关键字?

      "SELECT * FROM animals WHERE type = 'fish' and name='trout'"
      

      另外,您可以将 LINQ 用于 php http://phplinq.codeplex.com/

      【讨论】:

      • 如果您想要鱼查询的结果,然后是结果加上鳟鱼怎么办?然后你必须运行两个单独的查询......
      猜你喜欢
      • 1970-01-01
      • 2016-12-31
      • 2013-03-24
      • 2014-07-10
      • 2012-08-30
      • 1970-01-01
      • 2014-08-18
      • 2015-03-16
      相关资源
      最近更新 更多