Php Mysql查找结果_id,其中name=";x";然后删除共享该结果的其他条目“u id和name=”;“是”;

Php Mysql查找结果_id,其中name=";x";然后删除共享该结果的其他条目“u id和name=”;“是”;,php,mysql,sql,Php,Mysql,Sql,我混合使用php和mysql来执行以下查询,我相信一定有一种方法可以在SQL中实现。我已经去掉了一些代码,留下了足够多的代码,您应该能够看到我试图实现的目标 任何帮助都将不胜感激 SELECT result_id FROM categories WHERE name = "conventional" foreach ( $results as $row ){ $query = " DELETE FROM categories WHERE result_id = $ro

我混合使用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、结果id和名称


有多个条目与“结果”表中的条目具有相同的结果id。因此,我试图找到名为“Conventory”的条目的结果id,这样我就可以找到所有具有相同结果id的条目,如果它们的名称是“va”、“fha”、“usda”或“other”

您希望避免在循环中删除查询,下面是如何操作:

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);
}

您希望避免在循环中删除查询,下面是如何做到这一点:

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);
}

基本上,您希望避免在循环中删除查询,下面介绍如何做到这一点。看到我的答案了。我认为Amelies的答案会帮你解决这个问题吗?基本上,你希望避免在循环中删除查询,下面是如何做到的。看到我的答案了。我想Amelies的答案会帮你的忙吗?非常感谢更新的答案,尽管我收到了以下错误“你不能在FROM子句中指定更新的目标表'类别'”,使用此解决方案修复了此问题,非常感谢您的帮助!非常感谢更新的答案,尽管我收到了以下错误“您无法在FROM子句中指定更新的目标表'类别'”,但使用此处的解决方案修复了此问题,非常感谢您的帮助!