2012-02-24 55 views
4

我想獲取表中一列的DISTINCT值。但是,此列是通過id從另一個表內部聯接的。SQL在連接表上的不同值

當我嘗試在列上使用DISTINCT時,它會產生相同的結果,因爲DISTINCT也會考慮唯一標識符ID。是否有任何解決此問題的方法是從連接表中獲取列的DISTINCT值?

EG。

SELECT val1, b.val2, val3 
    FROM TABLE 1 
    JOIN (SELECT DISTINCT val2 
      FROM TABLE 2) AS b ON val1 = b.val2 
+0

對於什麼數據庫? – 2012-02-24 04:13:08

+0

即時通訊使用ASP.NET sql查詢 – karlstackoverflow 2012-02-24 04:14:11

+0

不,「SELECT DISTINCT val2 FROM TABLE 2」不會考慮ID。當你運行這個子查詢時,你只會得到你想要的DISTINCT值。你想讓你的結果看起來像什麼? – 2012-02-24 04:17:15

回答

0

提供我的解決方案: 我結束了使用嵌套不同的通過加入和所有嵌套的值(所有20+ )他們不得不被包裹在一個MIN(x)中,只要只有一個不同的值被返回,這些值並不重要。

5

嘗試在GROUP BY扔代替DISTINCT:

SELECT val1 
    , b.val2 
    , val3 
    FROM TABLE 1 
    JOIN (SELECT val2 
      FROM TABLE 2 GROUP BY val2) AS b ON val1 = b.val2 
+0

不知道爲什麼,但GROUP BY總是導致錯誤。我通過查詢生成器執行此操作的是Visual Studio 2010 – karlstackoverflow 2012-02-24 04:29:51

+0

它說:列'x'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。 – karlstackoverflow 2012-02-24 04:31:17

+3

結果相同 - 「GROUP BY val2」將返回不同/唯一的'val2'值。 – 2012-02-24 04:36:16