使用我有兩個表:items
和items_meta
。在一個查詢中,我想從項目表中選擇符合某些條件的所有項目。獲取SELECT查詢子欄目(ID)到另一個查詢
SELECT id,name,price description FROM items
WHERE {some conditions are true};
我想也選擇在items_meta匹配第一個查詢的項目的id
所有行。這將用於與第一個查詢不直接相關的另一個目的。
SELECT meta_name, meta_value,COUNT(*) FROM items_meta
WHERE item_id IN ({the ids from the previous query})
GROUP BY meta_name, meta_value;
我目前的實現是通過循環使用PHP的第一批成果,打造第二個查詢中使用的id
列表。
foreach ($items as $item){
$items_id[] = $item["id"];
}
$IDs = implode(",", $items_id);
我認爲應該有一個比這更好的sql方法。
這個解決方案是我最初實際上想到的。唯一的挑戰是第一個查詢實際上是一個複雜查詢的簡化形式,該查詢連接多個表以生成結果。在第二個查詢中重複這些連接實際上使得它更加複雜且處理器密集。 – elSama
我也想過使用第一個查詢創建一個臨時表,然後使用你的方法。我駁回這個想法的原因是因爲它引入了額外的複雜性。我不得不將數據插入到臨時表中,然後再次選擇所有結果作爲我的第一個輸出。如果有辦法插入數據並返回,我會很高興 – elSama