Bueno el Error te indica exactamente en que esta fallando tu consulta... UNA SUBCONSULTA, solo debe DEVOLVER UN SOLO valor... sino con que lo PODRIAS COMPARAR???...
si tu quieres comparar ese CAMPOY1 con una lista de VALORES QUE TE DEVUELVE esa SUBCONSULTa, entonces UTILIZA "EXISTS".. es mucho mejor... o parecido a eso... "IN", pero te recomiendo exists... algo asi (tomando tu ejemplo, no quiero modificar nada, solo te muestro el uso de EXISTS)... pruebalo asi...
Código SQL:
Ver originalDELETE *
FROM Tabla1 AS tbl1
INNER JOIN Tabla2 AS tbl2 ON tbl1.CampoX1 = tbl2.CampoY1
WHERE EXISTS ( SELECT 1
FROM Tabla1 tbl1x
INNER JOIN tabla2 tbl2x ON tbl1x.CampoX1 = tbl2x.CampoY1
WHERE tbl2x.CampoY1 = tbl2.CampoY2
AND CampoY2Condicion = 'Valor')