2009-10-12 91 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;