我有兩個表Names和Name_ids,如下所示。如何爲以下輸出編寫查詢?
平臺:SQL Server 2005/2008。
Names table:
Nam ID
-------------------------------- -----------
A 1
B 2
C 3
D 4
E 5
F 6
G 7
H 8
和
name_ids table
ID
-----------
3
6
8
我想產生以下輸出接合這些表。
Nam Nam_ID ID
-------------------------------- ----------- -----------
A 1 NULL
B 2 NULL
C 3 3
D 4 3
E 5 3
F 6 6
G 7 6
H 8 8
該邏輯將nam_id與id匹配,如果nam_id小於任何id,則返回NULL。 如果nam_id大於或等於id,則返回id。這是抓住。在上面的例子中,對於F,我們不應該返回F,6,3組合,但是我們應該只返回匹配的F,6,6。當找到匹配的項目像6,6時,它應該跳過其他匹配,如6,3。之後使用7,6而不是7,3。 如何爲上面的代碼寫一個sql查詢?查詢時間密集且需要快速執行。
Scripts:
Create table Names(Nam nvarchar(32), ID int);
insert into names values('A', 1);
insert into names values('B', 2);
insert into names values('C', 3);
insert into names values('D', 4);
insert into names values('E', 5);
insert into names values('F', 6);
insert into names values('G', 7);
insert into names values('H', 8);
Create table name_ids(ID int);
insert into name_ids values(3);
insert into name_ids values(6);
insert into name_ids values(8);
請幫忙。
更新: 嘿,大家好,非常感謝您提供解決方案的努力。現在我很困惑選擇性能最好的查詢。我選擇了幾個並試圖用非常大的結果集來分析性能。
你做解釋的一個很好的工作,但我們想看看你都試過到目前爲止 – epoch
@vikiii,4大於3,但小於6 – Pavan