Retaining earliest instances of duplicate entries from a table
DELETE t1
FROM people t1
JOIN people t2 USING (name,age,phrase)
WHERE t1.id &gt; t2.id;

fiddle

PS. None column is indexed now - so on 60kk table this query may be infinite with high probability. Create an index at least by the most variable column (I'd prefer phrase) including id, i.e.
CREATE INDEX idx_name
ON people (phrase, id);

Of course the best option is to create an index by (phrase, name, age, id).

Alternatively you may gather id values to be deleted into temporary table and then delete them:
CREATE TEMPORARY TABLE tmp (id INT PRIMARY KEY)
SELECT t1.id
FROM people t1
JOIN people t2 USING (name,age,phrase)
WHERE t1.id &gt; t2.id;

DELETE people
FROM people
JOIN tmp USING (id);

This may be faster then the former method. And the same index creation will improve.
fiddle