Can't specify target table for update in FROM clause
你的PHP应用在使用PDO执行UPDATE语句时遇到了MySQL限制:
'pdo_code' => 'HY000',
'db_code' => 1093,
'db_error' => 'Can\'t specify target table for update in FROM clause'
$sql = "UPDATE users SET status = 'inactive'
WHERE id IN (SELECT id FROM users WHERE last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR))";
$sql = "UPDATE users SET status = 'inactive'
WHERE id IN (SELECT id FROM (SELECT id FROM users WHERE last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR)) AS temp)";
$sql = "UPDATE users u1
JOIN (SELECT id FROM users WHERE last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR)) u2
ON u1.id = u2.id SET u1.status = 'inactive'";
$stmt = $pdo->prepare("SELECT id FROM users WHERE last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR)");
$stmt->execute();
$userIds = $stmt->fetchAll(PDO::FETCH_COLUMN);
if (!empty($userIds)) {
$placeholders = implode(',', array_fill(0, count($userIds), '?'));
$updateStmt = $pdo->prepare("UPDATE users SET status = 'inactive' WHERE id IN ({$placeholders})");
$updateStmt->execute($userIds);
}