Du verkar välja från samma bord två gånger. Var och en av dessa förekomster behöver sitt eget alias:
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
Observera att jag också har lagt till det saknade aliaset l
för links
bord.