使用我有两个表: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