sql有张表,需要找出两个字段中第一个字段相同,第二字段不一样数据大于一条的。

例如
ID NUMBER
1 SOD0001
1 SOD0001
2 SOD0003
2 SOD0004
3 SOD0003
3 SOD0003
4 SOD0004
4 SOD0005
5 SOD0005
5 SOD0005
5 SOD0005

要求结果如下:

ID NUMBER
2 SOD0003
2 SOD0004
4 SOD0004
4 SOD0005

谢谢了,最好能讲下思路

我觉得就是:


     ID 和Number 重复的不要

    只要不同的。

这样就简单了:


select id,number,count(1)
from tabname
group by id,number
having count(1) = 1

对ID,number进行分组求 重复数据行数, 行数=1 的才展现

追问

ID那一列必须相同的前提下,NUMBER那列不同的需要大于两行

追答

那ID = 1 和ID=3你为什么不选? 都是等于2 啊。

追问

那两行是ID行和NUMBER行数据都一样,我要求ID行必须一样的前提,NUMBER行的数据必须大于值不一样还要多余一行

追答

举个例子先。

追问

我上面不是有结果吗?

追答

你上面的例子中,ID=1、3、5 的数据完全相同;ID=2、4的数据不同。

用我写出的sql就能得出你要的结果。

你所谓的“我要求ID行必须一样的前提,NUMBER行的数据必须大于值不一样还要多余一行
” 我想不出来是什么样子的。

所以才要你举这种例子啊。

追问

能不能讲下思路啊,我测试过了 确实这样,因为我的sql基础太差了。

追答

    首先,我观察你的数据,发现:ID=1、3、5 的数据完全相同;ID=2、4的数据不同。

    当然,我没有理解你说的“我要求ID行必须一样的前提,NUMBER行的数据必须大于值不一样还要多余一行”

    然后,就简单了啊,你要的就是ID相同时,number不同情况下的数据。

    那就用   group by      having    的语法(如果这个语法不懂,请自己查资料)。

    答案如上。

温馨提示:答案为网友推荐,仅供参考
相似回答