使用内连接的Mysql查询

时间:2013-12-07 18:45:08

标签: mysql sql

我有下表t

id   a   b    c
1    1   1    1
2    2   1    1

和表t1

id  a   b   c  p
1  1    1   1   47 
2  1    1   1   2
3  2    1   1   78

我的目的是获得一张桌子

    id   a   b    c  p 
    1    1   1    1  49
    2    2   1    1  78

我尝试了以下脚本,但它不起作用@y=@y+t1.p总是null

select t.id,t1.a, t1.b , t1.c ,@y=@y+t1.p from t1
inner join t
where t.a=t1.a
and t.b=t1.b
and t.c=t1.c

有关详细信息enter link description here

4 个答案:

答案 0 :(得分:2)

这会得到您想要的结果:

select t.id,
       t1.a, 
       t1.b , 
       t1.c ,
       SUM(t1.p) from t1
inner join t ON t.a=t1.a and t.b=t1.b and t.c=t1.c
group by t.id, t1.a, t1.b, t1.c

sqlfiddle demo

这使用SUM和GROUP BY。确保使用GROUP BY中select的所有列以避免不希望的结果。

答案 1 :(得分:1)

您需要添加GROUP BY语句并使用SUM

SELECT
  t.id,
  t1.a, 
  t1.b, 
  t1.c,
  SUM(t1.p) AS p
FROM 
  t1
  INNER JOIN t
     USING (a, b, c)
GROUP BY a, b, c

您可以看到它正在运行here。可以用变量来做,但问题的类型通常用聚合函数来解决。

答案 2 :(得分:1)

尝试在sum()group by上使用colease功能。谷歌中有很多例子。

One link is here

答案 3 :(得分:1)

计算部分需要以这种方式完成(如果你有时需要它)

SET @y = 0;

select t.id,t1.a, t1.b , t1.c ,(@y:=@y + t1.p) from t1
inner join t
where t.a=t1.a
and t.b=t1.b
and t.c=t1.c
;

参见演示http://www.sqlfiddle.com/#!2/68a61/8