写数据库语句遇到问题

2017-08-08 21:40:53 +08:00
 yuanfnadi
表有两列
a b
1 2
1 3
2 3
2 1
2 2


现在要求出所有的数字一共出出现了几列
结果应该是
1 3
2 4
3 3

用数据库写我想到的方法是分别求出两列个数,相加以后减去相同的个数
1864 次点击
所在节点    程序员
8 条回复
yejinmo
2017-08-08 21:52:43 +08:00
结果应该是
1 3
2 5
3 3
xxoxx
2017-08-08 21:54:16 +08:00
目测了一下,结果应该是
1 3
2 5
3 2
yejinmo
2017-08-08 21:54:17 +08:00
select a, count(a) from
(
(select a from test union all select b from test) as temp
)
group by a;
yejinmo
2017-08-08 21:54:48 +08:00
@yejinmo
1 3
2 5
3 2
yuanfnadi
2017-08-08 22:15:24 +08:00
重复的不算
应该是
13
24
32

33 是手抖了
akira
2017-08-08 22:45:08 +08:00
SELECT a, SUM(`t`) `count`
FROM
(
SELECT a, COUNT(a) `t`
FROM test
GROUP BY a UNION
SELECT b, COUNT(b)
FROM test
WHERE a<>b
GROUP BY b
)tt
GROUP BY a
zeraba
2017-08-08 23:04:31 +08:00
就按照你的思路 把 a b 先并到一起 参考 3 楼 一样的随便取一个 最后 group by
伪代码
select case when a = b then a else a end hebing from test
union
select case when a <> b then b end hebing
SuperMild
2017-08-13 13:05:27 +08:00
select a, sum(num) as 'count' from
(select a, count(a) as num from AandB where a <> b group by a
union all
select b, count(b) from AandB where a <> b group by b
union all
select b, count(b) from AandB where a = b group by b)
group by a;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/381487

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX