2013-09-25 39 views
3

我不確定標題是否清楚,但這是情況。從多個輸入中獲取ID的SQL查詢

我有一個表,看起來像這樣:

ID inputID value 
4  1   10 
4  2   20 
4  3   100 
6  1   15 
6  2   20 
6  3   44 

我有用戶輸入,讓我之後,我想要得到的ID來獲得相應的其他信息inputID 1和inputID 2的值,到那個ID。

舉例:如果用戶給出inputID(1)= 10,inputID(2)= 20,我想4

使用簡單和語句不解決這個問題。我已經問過幾個人,但似乎無法解決這個看似簡單的問題。

+0

是對inputId價值的獨特之處? – harshit

+0

@harshit他們在一起,只會有一個符合兩個條件的ID。 –

回答

4

這樣的事情呢?

SELECT t1.ID 
FROM table t1 
INNER JOIN table t2 
ON t1.ID = t2.ID 
WHERE 
    t1.inputID = 1 AND t1.value = @input1 AND 
    t2.inputID = 2 AND t2.value = @input2 
0

嘗試此查詢:

Create Table #tmp (Id int, inputId int, value int) 

insert into #tmp values (4,1,10) 
insert into #tmp values (4,2,20) 
insert into #tmp values (4,3,100) 
insert into #tmp values (6,1,15) 
insert into #tmp values (6,2,20) 
insert into #tmp values (6,3,44) 

-- my query 
Select top 1 id from 
(Select id,count(id) as cnt from #tmp where (inputId=1 and value=10) OR (inputId=2 and value=20) Group by id) tbl 
order by cnt desc 

-- Scoregraphic's query 
SELECT t1.ID 
FROM #tmp t1 
INNER JOIN #tmp t2 
ON t1.ID = t2.ID 
WHERE 
    t1.inputID = 1 AND t1.value = 10 AND 
    t2.inputID = 2 AND t2.value = 20 


Drop table #tmp 

在見到執行計劃我的查詢是需要整體23%,ScoreGraphic的查詢需要21%

1
select ID from T as T1 
where inputID=1 and value=10 
     and EXISTS(select id from T where ID=T1.ID and inputID=2 and value=20)