我使用php和mysql的混合物做以下查询,我相信必须有一种方法来做它只是SQL。我已经剥离了一些代码,并留下了足够的代码,您应该能够看到我正在尝试完成什么。
任何帮助将非常感激!
SELECT result_id FROM categories
WHERE name = "conventional"
foreach ( $results as $row ){
$query = "
DELETE FROM categories
WHERE result_id = $row->result_id && (name = 'va' OR name = 'fha' OR name = 'usda' OR name = 'other')
";
$this->db($query);
}
编辑:从我目前收到的答案来看,我认为我解释得不够好。该表的列为id, result_id, name
有多个表项共享相同的result_id,因为它们与"results"表中的表项相关。因此,我试图找到名称为"conventional"的条目的result_id因此,我可以找到具有相同result_id的所有条目并删除它们,如果它们的名称是"va" "fha" "usda"或"other"
DELETE FROM categories
WHERE name IN ("va", "fha", "usda", "other")
AND result_id IN (
SELECT result_id FROM categories
WHERE name = 'conventional'
)
你想避免在循环中删除查询,下面是如何做到这一点:
SELECT result_id FROM categories
WHERE name = "conventional"
// Now build csv of ids
$arx = array();
foreach ( $results as $row ) {
$arx[] = $row->result_id;
}
if(!empty($arx)) {
$arx_1 = implode(',', $arx);
$query = "DELETE FROM categories
WHERE result_id in ({$arx_1}) AND (name = 'va' OR name = 'fha' OR name = 'usda' OR name = 'other')";
$this->db($query);
}