在只读mysql数据库中声明变量

问题描述 投票:0回答:1

我的问题与以下问题相同:Declare a variable in a 'read only' MySQL database,但是我不能在那里使用解决方案,因为我的查询时间太长,并且需要太多额外的联接,这会使查询变慢并使它超时。

我对使用MySQL Workbench访问的MySQL数据库具有只读访问权限。

我希望能够使用变量吗?到目前为止,我还没有运气。我尝试了以下方法:

set @project_ids := '674,705' -- RESTRICT PROJECTS; list must have no spaces
select distinct t.project_id, count(distinct(t.user_id)) as 'Total Users'

from table t

where find_in_set(@project_ids, t.project_id) -- RESTRICT PROJECTS

group by t.project_id

但我刚得到:

错误代码:1064。您的SQL语法有错误;检查 与您的MySQL服务器版本相对应的手册 在“在第2行选择不同的t.project_id”附近使用的语法”

我也尝试过:

-- where find_in_set(pm.project_id, @project_ids) <> 0 -- RESTRICT PROJECTS: project_id field is in set of project ids
-- where pm.project_id in (674, 705) -- RESTRICT PROJECTS

我也曾尝试将set @project_ids := '674,705'行移至查询中的各个位置,这也失败。

之所以要使用变量来限制project_ids的列表,是因为实际查询时间很长(275行,将20个表连接在一起,包括5个子查询和一个联合-这是来自同事的请求,这是唯一的症结)并引用此列表8次-我不想(每次)运行它们时都必须在8个地方更新此查询。

mysql variables mysql-workbench
1个回答
0
投票

解决方案:

© www.soinside.com 2019 - 2024. All rights reserved.