从数据库中选择唯一记录

时间:2013-03-27 18:59:47

标签: sql

运行此查询,

select * from table;

返回以下内容

|branch | number |
-------------------
|  1    |  123   |
|  1    |  001   |
|  2    |  123   |
|  3    |  123   |
|  4    |  123   |
|  1    |  123   |
|  1    |  789   |
|  2    |  123   |
|  3    |  123   |
|  4    |  009   |

我想找到ONLY branch 1

独有的值
|  1    |  001   |
|  1    |  789   |

这可以在没有将数据存储在单独的表中的情况下完成吗?我尝试过一些“选择不同”的查询&似乎没有得到我期待的结果。

5 个答案:

答案 0 :(得分:2)

SELECT branch, number
FROM table
WHERE branch = 1
GROUP BY branch, number

答案 1 :(得分:2)

如果您不需要任何汇总,可以使用distinct代替group by

select  distinct branch
,       number
from    YourTable
where   branch = 1

答案 2 :(得分:1)

  

我想我想说的是我想找到所有只有分支1独有的数字。如果在任何其他分支中找到它们,我都不想看到它们。

我想这就是你想要的。

SELECT distinct number
FROM MyTable
WHERE branch=1 and number not in 
( SELECT distinct number
FROM MyTable
WHERE branch != 1 )

答案 3 :(得分:0)

试试这个:

SELECT branch, number
FROM table
GROUP BY branch, number

以下是SQLFiddle,供您查看

如果要将其限制为仅分支1,则只需添加where子句。

SELECT branch, number
FROM table
WHERE branch = 1
GROUP BY branch, number

答案 4 :(得分:0)

要选择列number中唯一且值branch为1的所有值,您可以使用以下代码:

SELECT branch, number
FROM table1
WHERE number IN (
 SELECT number
 FROM table1
 GROUP BY number 
 HAVING (COUNT(number ) = 1)
)
AND branch = 1

有关演示,请参阅http://sqlfiddle.com/#!2/97145/62