You can even further join the tables to work as desired,
UPDATE characters a
INNER JOIN
(
SELECT account_name, MIN(lastaccess) min_date
FROM characters
GROUP BY account_name
) b ON a.Account_Name = b.Account_name AND
a.lastAccess = b.min_date
SET a.voted = 1
WHERE a.Account_Name = 'nameHere' AND
a.online = 1
UPDATE 1
Try using double quotes
, eg
$userName = $row['login'];
$result = mysql_query(" UPDATE characters a
INNER JOIN
(
SELECT account_name, MIN(lastaccess) min_date
FROM characters
GROUP BY account_name
) b ON a.Account_Name = b.Account_name AND
a.lastAccess = b.min_date
SET a.voted = 1
WHERE a.Account_Name = '$userName' AND
a.online = 1");
As a sidenote, the query is vulnerable with SQL Injection
if the value(s) of the variables came from the outside. Please take a look at the article below to learn how to prevent from it. By using PreparedStatements
you can get rid of using single quotes around values.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…