0

我混合使用 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,因为它们与“结果”表中的条目相关。所以我试图找到名为“conventional”的条目的result_id,这样我就可以找到所有具有相同result_id的条目,如果它们的名字是“va”、“fha”、“usda”或“other”,则将它们删除

4

2 回答 2

3
DELETE FROM categories 
WHERE name IN ("va", "fha", "usda", "other")
AND result_id IN (
  SELECT result_id FROM categories
  WHERE name = 'conventional'
)
于 2013-04-19T10:28:49.010 回答
0

您想避免在循环中删除查询,这是如何做到的:

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);
}
于 2013-04-19T10:33:34.867 回答