我有几张桌子。我将尝试简化:Table_1 ID是唯一的。 Table_2 ID不是唯一的。 table_2存储table_1上一行的ID和一个值,例如,结果为:
select t1.id, count(*)
from table_1 t1
group by t1.id
id | count
----------
1 | 2
3 | 1
我想计算table_2上每个ID的数量,所以我做
select t1.id, t1.A, t2.B
from table_2 t2
left join table_1 t1
on t1.id = t2.id
ID | A | B
----------
1 | a | x
1 | a | y
3 | c | z
我想列出table_2上的每一行及其在table_1.A上的相应值,所以我这样做
ID | A | B | count
------------------
1 | a | x | 2
1 | a | y | 2
3 | c | z | 1
有没有办法将这两个选项组合成一个,得到这样的结果?
<div id="headerwrap" name="home">
<ul class="cb-slideshow">
<li><span>Image 01</span>
<div><h3></h3></div></li>
<li><span>Image 02</span>
<div><h3></h3></div></li>
<li><span>Image 03</span>
<div><h3></h3></div></li>
<li><span>Image 04</span>
<div><h3></h3></div></li>
<li><span>Image 05</span>
<div><h3></h3></div></li>
<li><span>Image 06</span>
<div><h3></h3></div></li>
</ul>
<header class="clearfix">
<div id="homepagelogo"> </div>
答案 0 :(得分:1)
您可以通过加入count
结果来合并结果。
select t1.id, t1.A, t2.B, x.cnt as count
from t2
left join t1
on t1.id = t2.id
join (select t2.id, count(*) as cnt
from t2
group by t2.id
) x
on x.id = t1.id
答案 1 :(得分:1)
除了@vkp发布的通用派生表解决方案之外,您还可以使用标量子查询返回单个值:
select t1.id, t1.A, t2.B,
(select count(*)
from t2 as x
where x.id = t2.id
) cnt
from t2