2009-10-12 66 views
0

在SQL中获取唯一行/值。我也同样喜欢这样在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个值。

但我不想重复的值。

回答

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 
+0

这可能是最好的答案。我想我有一些其他的数据点,我没有在我的问题中。但基于我写的问题,这是一个很好的答案。 – Maestro1024 2009-10-12 14:03:20

1

使用SELECT DISTINCT

如:

SELECT DISTINCT value1, value2, value3 FROM table1, table2 
+0

我看着明显,像 “从表2 SELECT DISTINCT ValueC”,但那么如果你看看我的例子,那么会忽略第3行,其中ValueC是相同的,但是值A不是。 – Maestro1024 2009-10-12 13:49:05

+0

啊,但你需要把你想要在SELECT子句中不同的所有列 - 所以,不是SELECT DISTINCT ValueC,而是SELECT DISTINCT ValueA,ValueB,ValueC。 – 2009-10-12 13:55:29

1

选择从表1 *鲜明,表2

0

这个怎么样?

SELECT DISTINCT * FROM Table1, Table2 
1

你可能想看看为SQL参考:

  • 独特
  • 鲜明
  • 集团通过
1
SELECT DISTINCT * 
FROM table1, table2 
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;