我有这样的看法:
create view resources_view as
select message.id AS ID,
message.id AS SORT_ID,
'MESSAGE' AS TYPE,
message.description AS PREVIEW,
message.created_at AS CREATED_AT,
message.modified_at AS MODIFIED_AT,
user.nickname AS CREATOR,
message.creator_id AS CREATOR_ID,
IF(message.deleted = TRUE, 'DELETED', IF(reportNumberCountFunction(message.id, 'message') > 0, 'REPORTED',
IF(message.verified_at IS NOT NULL, 'VERIFIED', 'NOT_VERIFIED'))) AS STATUS,
userAssignee.nickname AS ASSIGNEE,
message.assignee_id AS ASSIGNEE_ID,
reportNumberCountFunction(message.id, 'message') AS REPORT_NUMBERS
from message message
join user user ON message.creator_id = user.id
left join user userAssignee ON message.assignee_id = userAssignee.id
正如你所看到的,reportNumberCountFunction在同一个查询中使用了两次。我没有找到任何有用的东西,所以我需要向Maven提出问题。是否有可能使用REPORT_NUMBERS中的这个值,或者以某种方式将这个值存储在某个临时变量中,这样我就不会调用这个函数两次?我使用的是最新的MariaDB
1条答案
按热度按时间vohkndzv1#
教科书中使用了十字架,但不要认为这是MariaDB中的一个东西。
下一个最好的方法。使用一次派生表中的函数,然后可以在外部查询中通过别名引用输出。