SQL语句,子句如何引用主句的字段值,

tjficcbw 2019-03-20 04:55:01
我有一个表,
tb
字段:
id, pname, pid, note, updatetime
pid 取值,1,2,3
note为数字,
我想得到,
select pname,pid=1时的note 合计,pid=2时的note 合计,pid=3时的note 合计 from tb group pname


就是每个pname循环一遍,并把每个pid等于1,2,3的值在一行里列出来,
...全文
307 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
AHUA1001 2019-03-21
  • 打赏
  • 举报
回复
也可能是
SELECT
tb.pname,
SUM(IF(tb.pid = 1, tb.note, 0)) sum_note_1,
SUM(IF(tb.pid = 2, tb.note, 0)) sum_note_2,
SUM(IF(tb.pid = 3, tb.note, 0)) sum_note_3
FROM
tb
GROUP BY tb.pname;
AHUA1001 2019-03-21
  • 打赏
  • 举报
回复
是这个意思不

SELECT
tb.pname,
tb.pid,
SUM(IF(tb.pid = 1, tb.note, 0)) sum_note_1,
SUM(IF(tb.pid = 2, tb.note, 0)) sum_note_2,
SUM(IF(tb.pid = 3, tb.note, 0)) sum_note_3
FROM
tb
GROUP BY tb.pname,
tb.pid;

tjficcbw 2019-03-21
  • 打赏
  • 举报
回复
感恩老师,谢谢,我明白了,
AHUA1001 2019-03-21
  • 打赏
  • 举报
回复
引用 3 楼 tjficcbw 的回复:
感恩老师,能给讲一讲这个函数吗
IF(tb.pid = 1, tb.note, 0)

如果tb.pid = 1等式成立,返回tb.note的值,否则返回0。
tjficcbw 2019-03-21
  • 打赏
  • 举报
回复
感恩老师,能给讲一讲这个函数吗
IF(tb.pid = 1, tb.note, 0)

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧