【发布时间】:2020-07-20 16:50:05
【问题描述】:
我有这个代码:
UPDATE fizmod_csat_szolgaj
SET
erv_vege = TO_DATE('2020-JAN.-01', 'YYYY-MON.-DD')
WHERE
fizmod_csat_szolgaj_id IN (
SELECT
fmcsatszolg.fizmod_csat_szolgaj_id
FROM
szolg_ajanlat_tipus szolgajtip
INNER JOIN fizmod_csat_szolgaj fmcsatszolg ON ( fmcsatszolg.szolgaltatasi_ajanlat_tipus_id = szolgajtip.szolgaltatasi_ajanlat_tipus_id )
INNER JOIN apex_changeset ac ON ( ac.CHANGESET_ID = szolgajtip.CHANGESET_ID AND ac.status_es = 'CHANGESET_STATUS#ELES' )
WHERE
greatest((
SELECT
MAX(erv.erv_vege)
FROM
ervenyesseg erv
WHERE
erv.szolgaltatasi_ajanlat_tipus_id = szolgajtip.szolgaltatasi_ajanlat_tipus_id
),(
SELECT
MAX(erv.ertekesith_vege_d)
FROM
ervenyesseg erv
WHERE
erv.szolgaltatasi_ajanlat_tipus_id = szolgajtip.szolgaltatasi_ajanlat_tipus_id
)) < '2020-JAN. -01'
)
AND engedelyezo_jel = '1';
在 pastebin 上:https://pastebin.com/xpVJyYC9
我想更改 SET 语句,用 WHERE 子句中的日期更新 erv_vege。 所以,
greatest((
SELECT
MAX(erv.erv_vege)
FROM
ervenyesseg erv
WHERE
erv.szolgaltatasi_ajanlat_tipus_id = szolgajtip.szolgaltatasi_ajanlat_tipus_id
),(
SELECT
MAX(erv.ertekesith_vege_d)
FROM
ervenyesseg erv
WHERE
erv.szolgaltatasi_ajanlat_tipus_id = szolgajtip.szolgaltatasi_ajanlat_tipus_id
))
将返回一个日期(例如 2019.JAN.02),我想用这个日期更新 erv_vege。
SET erv_vege = TO_DATE( the date from greatest(...), 'YYYY-MON.-DD')
我试过了
SET erv_vege = SELECT to_date(GREATEST(
( SELECT MAX(erv.erv_vege) FROM ERVENYESSEG erv WHERE erv.szolgaltatasi_ajanlat_tipus_id = szolgajtip.szolgaltatasi_ajanlat_tipus_id ),
( SELECT MAX(erv.ERTEKESITH_VEGE_D) FROM ERVENYESSEG erv WHERE erv.szolgaltatasi_ajanlat_tipus_id = szolgajtip.szolgaltatasi_ajanlat_tipus_id )
), 'YYYY-MON.-DD')
FROM ERVENYESSEG erv, SZOLG_AJANLAT_TIPUS szolgajtip ...
但它没有用。我该如何解决这个问题?
【问题讨论】:
标签: mysql sql plsql sql-update where-clause