Модуляризация определений подзапроса в SELECT? - PullRequest
0 голосов
/ 30 мая 2020

У меня есть SELECT в строках

SELECT  
(very complex calc1) as `amount`,
(very complex calc2) as `paid_onlne`,
(very complex calc3) as `paid_by_check`,
(very complex calc1) - (very complex calc2)-(very complex calc3) as `amount_due`

FROM  billings
GROUP BY billings.id

Все вычисления используют один-много sub_selects

Об этом уже спрашивали раньше, но я ищу способ, чтобы повторно использовать спецификации cal c 1,2,3 в последующих столбцах без необходимости вставлять код снова и снова, оставляя запрос, который очень трудно поддерживать.

1 Ответ

1 голос
/ 30 мая 2020

"Цель состоит не в том, чтобы повысить производительность, а в том, чтобы упростить редактирование. Calc1 в реальном приложении используется в 4 разных столбцах, поэтому, если требуется изменение, мне придется сделать это 4 раза.

Да, это возможно с LATERAL JOIN - MySQL 8.0.14 :

SELECT billings.id, 
 s1.amount,
 s2.paid_onlne,
 s3.paid_by_check,
 s1.amount - s2.paid_online - s3.paid_by_check as `amount_due`
FROM  billings
,LATERAL JOIN (very complex calc1) s1
,LATERAL JOIN (very complex calc2) s2
,LATERAL JOIN (very complex calc3) s3
GROUP BY billings.id;

Связано: PostgreSQL: с использованием вычисляемого столбца в том же запрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...