2009-11-26 57 views
-1

表1 T10(ID)表加入其中

id 
--- 
1 
2 

表T11(A1,A2,A3)

a1 a2 a3 
---------- 
1 10 a 
1 10 b 
1 11 b 
1 12 c 
2 20 d 
2 21 e 

SELECT * FROM T10一個,T11 b其中a.id = b.a1 如何顯示

剛剛獲得T11的隨機行

maybe display this 
id a1 a2 
---------- 
1 1 11 b 
1 1 10 a //(not display this row) 
1 1 10 b //(not display this row) 
1 1 12 c //(not display this row) 
2 2 20 
2 2 21 //(not display this row) 
+0

這些都是一些可怕的表和列名... – cjk 2009-11-26 08:08:12

+0

只是試井 – shuc 2009-11-26 08:20:49

+0

您正在使用什麼數據庫? – 2009-11-26 08:29:45

回答

3
select a1 as id, a1, min(a2) as a2 
from t11 
group by a1 

會給你:

id a1 a2 
---------- 
1 1 10 
2 2 20 
+0

是的,但他說,雖然很難弄清楚,我們希望插入表中的第一行(例如a2 = 11,id = 1),但顯然他確實需要其他的確定他特別想要的那一行以及他們在表中插入的方式的因素。 – Kitson 2009-11-26 08:15:38

+0

是啊!基特森看到它 – shuc 2009-11-26 08:21:46

0

這就是答案:

SELECT * 
    FROM t10 a, (
     SELECT * FROM (
      SELECT b.*, ROW_NUMBER() OVER(PARTITION BY a10 ORDER BY a10) as rn 
      FROM t11 b 
     ) WHERE rn =1) b 
WHERE a.id = b.a10(+) 
+2

請不要發佈*答案*當你想添加信息。你可以編輯你的問題(並請做,它缺少一些信息),或者添加*註釋*到你收到的答案(這裏,這裏)。歡迎。 – Kobi 2009-11-26 08:13:22

+1

除非是答案,否則不要寫答案。評論其他答案或更新您的問題。此外,您仍然在t11列顛倒b和b中的10和11。 – cjk 2009-11-26 08:13:56

+0

是的,我很抱歉,第一次問這裏 – shuc 2009-11-26 08:34:50

0

這看起來幾乎就像他想要像第一個/從MS Access LAST。

這本有(密切),在SQL Server中使用

DECLARE @Table TABLE(
     id INT, 
     a1 INT, 
     a2 INT 
) 

INSERT INTO @Table (id,a1,a2) SELECT 1, 1, 11 
INSERT INTO @Table (id,a1,a2) SELECT 1, 1, 10 
INSERT INTO @Table (id,a1,a2) SELECT 1, 1, 12 
INSERT INTO @Table (id,a1,a2) SELECT 2, 2, 20 
INSERT INTO @Table (id,a1,a2) SELECT 2, 2, 21 

SELECT * 
FROM @Table t 
WHERE a2 = (SELECT TOP 1 a2 FROM @Table WHERE id = t.id AND a1 = t.a1) 
+0

謝謝你的回答 但不是我的回答 也許表達不清楚 – shuc 2009-11-26 08:59:38