Técnicamente, las dos consultas están mal escritas.
Como em concentré en el problema programático no lo vi pero eso:
Es ilegal en MySQL, porque no admite que se consulte y se inserte o modifiquen registros de la misma tabla en la misma sentencia, y MySQL tampoco admite subconsultas en un VALUE.
y esto:
está mal, por la misma razon indicada antes al final.
Necesitas entender que SQL y Java no son el mismo lenguaje. Cada uno tiene sus reglas y si vas a embeber SQL en Java, el SQL tiene que estar correctamente escrito para la base de datos.