考慮我有以下表:如何編寫一個查詢以在連接兩個表時僅獲得第一個匹配的行?
表1:
AId
AMoniker
表2:
BId
BMoniker
Table1->表2是一對多的關係
我想要一個如果某個特定的Amoniker具有多個BMonikers,那麼只有第一個應該出現在這個表中。
例如,如果表具有以下數據:
表1:
1 ABCD
2 DEFG
3 QWER
表2:
1 QZ
1 XC
1 CV
2 DE
2 OP
3 QW
查詢應返回以下:
ABCD QZ
DEFG DE
QWER QW
我的查詢來獲取所有行是:
select b.BMoniker, a.AMoniker
into #moniker_map
from Table1 a inner join Table2 b
on a.Aid=b.Bid
我怎麼能修改此從表2只得到第1行每個ID。
我嘗試以下查詢:
select b.BMoniker, a.AMoniker
from Table1 a inner join Table2 b
on a.Aid=b.Bid
and b.BMoniker in
(
select top 1 BMoniker
from Table2
where Bid=cb.Bid
ORDER BY BMoniker
)
,但我得到以下錯誤:附近關鍵字 '頂' Sybase錯誤代碼= 156 有語法錯誤,SQLSTATE = 「ZZZZZ」
你必須定義「第一」行。哪一個?什麼順序? – Stu 2010-11-19 22:40:33