2010-07-29 28 views

回答

3
SELECT TABLE_NAME, GROUP_CONCAT(DISTINCT COLUMN_NAME SEPARATOR ',') AS columns 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'yourdatabasename' 
AND COLUMN_NAME IN ('applicationid', 'schoolid', 'familyid') 
GROUP BY TABLE_NAME 

结果将是各表的阵列,并且它具有(仅来自该组`的applicationID,schoolid,FAMILYID的),为逗号分隔字段的列。

foreach ($results as $result) { 
    $cols = explode(',', $result['columns']); 
    foreach ($cols as &$col) { 
     $col .= ' = 123'; 
    } 
    $sql = 'DELETE FROM '. $result['TABLE_NAME']. 
     ' WHERE ' . implode(' OR ', $cols); 
} 

这会产生像每个表的查询:

DELETE FROM table1 WHERE applicationid = 123 OR schoolid = 123 

而且它只包括表中的字段...

0

首先使用SHOW TABLES遍历表列出来获得表的名单,然后和使用DELETE FROM tablename WHERE field=?

重要说明:您应该有权使用SHOW TABLES

0

如何

$showtablequery = " 
SHOW TABLES 
FROM 
[database] 
"; 

$ x ='0'; $ showtablequery_result = mysql_query($ showtablequery); while($ r = mysql_fetch_array($ showtablequery_result)) { $ query =“DELETE FROM $ r [$ x] WHERE applicationid = 123 OR schoolid = 123 OR familyid = 123”; $ X ++ }

相关问题