2010-11-11 98 views
0

我有一個查詢,看起來像下面T-SQL查詢W /分組

SELECT t1.Name, 
     t2.ID, 
     t2.name 
FROM table1 t1 
INNER JOIN table2 t2 ON t1.ID = t2.ID 

,給了我價值的一個巨大的列表。但我真正想要的僅僅是t1.Name的不同值,但與t2.ID和t2.name的相關值不同。

我能想到的唯一方法就是使用Group By子句,但是我必須在t2.ID和t2.name上使用聚合函數。我使用了MIN/MAX,但是我得到的t2.ID和t2.name的值可能不在同一行。

我敢肯定,這裏有一些簡單的東西。感謝您的幫助球員

編輯: 這是實際的查詢

SELECT (wi.wi_wpsnumbers), ws.* 
FROM wi_weld_instance wi 
INNER JOIN wlds_weld_section ws ON wi.weldinstanceid = ws.weldinstanceid 

這是返回的前幾行:

*999    100633 106* 
*120,200,400  100656 44* 
120,200,400 100656 46 
120,200,400 100656 47 
120,200,400 100656 48 
120,200,400 100656 49 
120,200,400 100656 50 
120,200,400 100656 51 
*123    100657 46* 
123    100658 46 
123    100659 46 
123    100660 46 

所以我想真正想要的是第一行,然後第二行然後...其中123出現在第一列等。我用星標記了這些行。

+1

我想你將不得不發佈更多關於你的問題的性質,以獲得對你有用的幫助。例如,table1和table2之間的FK關係的性質是什麼?什麼是您使用此查詢的上下文? Etc ... – 2010-11-11 15:04:14

+0

身份證上有FK關係。我們試圖將查詢用作發生焊接天堂的證據。這就是爲什麼我試圖刪除第一列中的重複值,因爲我們只需要每個焊接類型一個示例。 – gazamatazzer 2010-11-11 15:26:37

回答

0

聽起來像你只需要使用DISTINCT關鍵字,你似乎已經暗示了。

SELECT DISTINCT(t1.Name), 
    t2.ID, 
    t2.name 
FROM table1 t1 
INNER JOIN table2 t2 ON t1.ID = t2.ID 
+0

即時從其他海報猜測,這裏的tSQL語法有點不同於MySQL。丟失零件 – 2010-11-11 15:06:03

+0

對不同的行使用不同的外觀,即所有三列中的不同值,我只希望在第一列中使用不同的值。 – gazamatazzer 2010-11-11 15:10:37

+0

@gazamatazzer - 如果一個特別的t1.Id對應於t2中的幾行,這需要是一個有點任意的決定,決定哪個包含 – 2010-11-11 15:21:04

0

有一個DISTINCT關鍵字。

SELECT DISTINCT t1.Name, 
     t2.ID, 
     t2.name 
FROM table1 t1 
INNER JOIN table2 t2 ON t1.ID = t2.ID 

約從MSDN DISTINCT相關信息:「指定唯一行可以在結果集中出現。出於DISTINCT關鍵字的目的,空值被認爲是相等的。'

+0

對不同的外觀使用不同的外觀,即所有三列中的不同值,我只希望在第一列中使用不同的值。 – gazamatazzer 2010-11-11 15:11:32

+0

我們可以得到帶樣本返回值的樣本表嗎?我不完全瞭解您想要返回的內容。 – 2010-11-11 15:13:47