With LIMIT you can get just one of something, if there are multiple of this thing. Also, if rows are completely identical, there is no way to distinguish them at all, so order does not matter.
SELECT * FROM t WHERE colc=3 LIMIT 1
Sometimes you want a report of rows that are duplicate:
SELECT colc, COUNT(*) AS cnt FROM t GROUP BY colc
A GROUP BY clause looks at the fields that you name (here: colc) and considers all rows with the same colc value identical. It makes heaps for each colc value, so all colc=1 go onto one heap, colc=2 onto another and so on. The COUNT() aggregate function measures the height of these heaps.
A HAVING clause is a WHERE-like condition applied after the GROUP BY. We can use that to choose rows that are unique or that are duplicate, asking for cnt being 1 or larger than 1:
-- list all unique rows
SELECT colc, COUNT(*) AS cnt FROM t GROUP BY colc HAVING cnt = 1
You can make the actual contents of the heaps visible:
SELECT colc, COUNT(*) as cnt, GROUP_CONCAT(colb) AS content FROM t GROUP BY colc HAVING cnt > 1
It is possible to delete all but one copy of duplicate rows using the MySQL extension of LIMIT with DELETE:
DELETE FROM t WHERE colc=3 LIMIT 1
This will match ALL colc=3, but will delete only one row due to the LIMIT.