Wygląda na to, że wybierasz dwa razy z tego samego stołu. Każde z tych wystąpień wymaga własnego aliasu:
SELECT
l.url
FROM
b as b1 /* <-- */
INNER JOIN links as l
ON b1.parent_id = l.id
INNER JOIN b as b2 /* <-- */
ON l.id = b2.link
WHERE l.url LIKE 'http://domain%' LIMIT 0, 30
Pamiętaj, że dodałem również brakujący alias l
dla links
tabeli.