我发现我的一些用户有重复的元数据键值(我唯一的错误是因为我直接将数据插入了wp\\u usermeta表!)。例如,此查询
SELECT * FROM `wp_usermeta` WHERE `user_id` =2327x LIMIT 0 , 30
返回两行
meta_id - user_id - meta_key - meta_value
178208 - 23270 - bhaa_runner_status - D
187959 - 23270 - bhaa_runner_status - D
我有很多用户都受此影响,我想知道是否可以运行SQL更新或删除来发现此情况并删除较大的“meta\\u id”行?
SO网友:AndyT
我发现以下方面有所帮助:
$sql = "SELECT MAX(umeta_id)
FROM wp_usermeta
GROUP BY user_id, meta_key, meta_value
HAVING COUNT(user_id) > 1";
$um = $wpdb->get_results( $sql, ARRAY_A );
foreach ($um as $user) {
$sql = "DELETE FROM wp_usermeta WHERE umeta_id = " . $user[\'umeta_id\'];
$wpdb->query($sql);
}
count子句有助于确保获得重复的内容。最大值为您提供更大的“meta\\u id”。