Mysql 在语法中添加一个变量
在这里运行的示例中 我想在检索到的数据中添加用户id 我用这个Mysql 在语法中添加一个变量,mysql,sql,Mysql,Sql,在这里运行的示例中 我想在检索到的数据中添加用户id 我用这个 ;with postvotes as ( select v.creationdate, v.userid , p.id postid , case v.votetypeid when 1 then 'accepts' when 2 then 'up-votes' when 3 then 'down-votes' when 9 then 'b
;with postvotes as
(
select v.creationdate,
v.userid
, p.id postid
, case v.votetypeid
when 1 then 'accepts'
when 2 then 'up-votes'
when 3 then 'down-votes'
when 9 then 'bounty_recieved'
end vote_type
, case p.posttypeid
when 1 then 'question'
when 2 then 'answer'
end post_type
, sum(case v.votetypeid
when 1 then 15
when 2 then 10
when 3 then -2
when 9 then bountyamount
end
) reputation_change
from votes v
inner join posts p on p.id = v.postid
where p.owneruserid = ##userid?1719510##
and posttypeid in (1,2)
and votetypeid in (1,2,3,9)
group by v.creationdate, p.id, votetypeid, posttypeid
),
bounties as
(
select v.creationdate
, v.postid postid
, 'bounty-offered' vote_type
, 'question' post_type
, sum(bountyamount) reputation_change
from votes v
where v.userid = ##userid?1719510##
and votetypeid = 8
group by v.creationdate, v.postid, votetypeid
),
approvededits as
(
select se.creationdate
, se.postid postid
, 'approved-edit' vote_type
, case p.posttypeid
when 1 then 'question'
when 2 then 'answer'
end post_type
, sum(2) reputation_change
from suggestededits se
inner join posts p on p.id = se.postid
where se.Owneruserid = ##userid?1719510##
and approvaldate is not null
group by se.creationdate, se.postid, posttypeid
)
select *
from postvotes
union
select *
from bounties
union
select *
from approvededits
但我收到了这个错误:
列“voces.UserId”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中
如何修复它?您忘了在分组列表中添加用户ID。因此,更新后的查询可能如下所示-
;with postvotes as
(
select v.creationdate,
, p.id postid
, case v.votetypeid
when 1 then 'accepts'
when 2 then 'up-votes'
when 3 then 'down-votes'
when 9 then 'bounty_recieved'
end vote_type
, case p.posttypeid
when 1 then 'question'
when 2 then 'answer'
end post_type
, sum(case v.votetypeid
when 1 then 15
when 2 then 10
when 3 then -2
when 9 then bountyamount
end
) reputation_change
from votes v
inner join posts p on p.id = v.postid
where p.owneruserid = ##userid?1719510##
and posttypeid in (1,2)
and votetypeid in (1,2,3,9)
group by v.creationdate, p.id, votetypeid, posttypeid
),
bounties as
(
select v.creationdate
, v.postid postid
, 'bounty-offered' vote_type
, 'question' post_type
, sum(bountyamount) reputation_change
from votes v
where v.userid = ##userid?1719510##
and votetypeid = 8
group by v.creationdate, v.postid, votetypeid
),
approvededits as
(
select se.creationdate
, se.postid postid
, 'approved-edit' vote_type
, case p.posttypeid
when 1 then 'question'
when 2 then 'answer'
end post_type
, sum(2) reputation_change
from suggestededits se
inner join posts p on p.id = se.postid
where se.Owneruserid = ##userid?1719510##
and approvaldate is not null
group by se.creationdate, se.postid, posttypeid
)
select *
from postvotes
union
select *
from bounties
union
select *
from approvededits
您忘记在分组列表中添加用户ID。因此,更新后的查询可能如下所示-
;with postvotes as
(
select v.creationdate,
, p.id postid
, case v.votetypeid
when 1 then 'accepts'
when 2 then 'up-votes'
when 3 then 'down-votes'
when 9 then 'bounty_recieved'
end vote_type
, case p.posttypeid
when 1 then 'question'
when 2 then 'answer'
end post_type
, sum(case v.votetypeid
when 1 then 15
when 2 then 10
when 3 then -2
when 9 then bountyamount
end
) reputation_change
from votes v
inner join posts p on p.id = v.postid
where p.owneruserid = ##userid?1719510##
and posttypeid in (1,2)
and votetypeid in (1,2,3,9)
group by v.creationdate, p.id, votetypeid, posttypeid
),
bounties as
(
select v.creationdate
, v.postid postid
, 'bounty-offered' vote_type
, 'question' post_type
, sum(bountyamount) reputation_change
from votes v
where v.userid = ##userid?1719510##
and votetypeid = 8
group by v.creationdate, v.postid, votetypeid
),
approvededits as
(
select se.creationdate
, se.postid postid
, 'approved-edit' vote_type
, case p.posttypeid
when 1 then 'question'
when 2 then 'answer'
end post_type
, sum(2) reputation_change
from suggestededits se
inner join posts p on p.id = se.postid
where se.Owneruserid = ##userid?1719510##
and approvaldate is not null
group by se.creationdate, se.postid, posttypeid
)
select *
from postvotes
union
select *
from bounties
union
select *
from approvededits
我现在收到这个错误
所有使用UNION、INTERSECT或EXCEPT运算符组合的查询在其目标列表中必须有相同数量的表达式代码>@Nathalie,相应地编辑了答案。请立即重试。我现在收到此错误使用UNION、INTERSECT或EXCEPT运算符组合的所有查询在其目标列表中必须具有相同数量的表达式代码>@Nathalie,相应地编辑了答案。请现在试一试。