You do need the GROUP BY to do this, but you first need to decide what the rules are: you are using two incompatible rules to select your data.
Why do you select the first image for "ABC", and the last image for "E @2F"?
SQL has no idea which image you want, so before you even start coding a query, you need to decide what the rules are. Then you can apply them.
Suppose the rules were "select the lowest value ID for duplicates" - then GROUP BY and JOIN will give you results:
SELECT a.* FROM MyTable a
JOIN (SELECT MIN(Id) AS MinID
GROUP BY Shopname) b
ON a.ID = b.MinID
But until you decide the rules, there is no code you can write!