在SQL中获取唯一的行/值

时间:2009-10-12 13:43:46

标签: sql sql-server select

在SQL中获取唯一的行/值。我有类似这样的数据

valueA  ValueB    ValueC

test    "Value1"  "Something"

test    "Value1"  "Something else"

test2   "Value1"  "Something else"

那么我想获得前两行,因为valueC是不同的,然后我也想要行 3。

但是说第4行是

test    "Value1"  "Something"

与第1行相同。我不想要那一行。

我可以使用select语句或其他地方吗?

在我的架构中,ValueA位于一个表中,然后值b和C来自不同的表。 所以我正在做类似

的事情
select * from table1,table2

给了我3个值。

但我不想要重复的值。

7 个答案:

答案 0 :(得分:3)

SELECT DISTINCT * FROM Table1, Table2

会做你想做的事。

但是,SELECT语句不包含告诉系统 如何将行连接在一起的标准。因此,您将获得一个笛卡尔积,其中包含的行数等于Table1中的行数乘以Table2中的行数。这通常是你想要的(偶尔)。

所以你可能想要这样的东西:

SELECT DISTINCT * FROM Table1, Table2 WHERE Table1.SomeColumn = Table2.SomeColumn

或者,更新的SQL方言:

SELECT DISTINCT * FROM Table1 INNER JOIN Table2 ON Table1.SomeColumn = Table2.SomeColumn

答案 1 :(得分:1)

使用SELECT DISTINCT

如:

SELECT DISTINCT value1, value2, value3 FROM table1, table2

答案 2 :(得分:1)

从table1,table2

中选择Distinct *

答案 3 :(得分:1)

您可能希望查看SQL参考:

  • 唯一
  • 鲜明
  • 分组依据

答案 4 :(得分:1)

SELECT DISTINCT *
FROM table1, table2

答案 5 :(得分:0)

这个怎么样?

SELECT DISTINCT * FROM Table1, Table2

答案 6 :(得分:0)

试试这个:

select a.valueA, b.valueB, b.valueC
from table1 a join table2 b on <join condition>
group by a.valueA, b.valueB, b.valueC;