#java #mysql #jpa #querydsl
#java #mysql #jpa #querydsl
Вопрос:
Мне нужно запустить инструкцию update, аналогичную приведенной ниже в MySQL. Он обновляет значения в таблице на основе условий строк в той же таблице. Есть ли способ добиться этого в QueryDSL JPA (или даже в этом родном)?
UPDATE items,
(SELECT id, retail / wholesale AS markup, quantity FROM items)
AS discounted
SET items.retail = items.retail * 0.9
WHERE discounted.markup >= 1.3
AND discounted.quantity < 100
AND items.id = discounted.id;
Ответ №1:
Вы можете попробовать использовать производную таблицу:
UPDATE items
SET items.retail = items.retail * 0.9
WHERE
items.id in (SELECT id FROM (select * from items) discounted WHERE discounted.quantity < 100);
Я удалил несколько частей из вашего запроса, но вы поняли суть решения.
Комментарии:
1. Запрос, который я опубликовал, уже работает, я спросил, как это сделать с помощью QueryDSL JPA или библиотеки SQL.