在某些語言中(想到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