3

我不确定标题是否清楚,但情况就是这样。

我有一个看起来像这样的表:

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

我有用户输入,它为我提供了 inputID 1 和 inputID 2 的值,之后我想获取 ID 以获取与该 ID 对应的其他信息。

例子:如果用户给inputID(1)=10,inputID(2)=20,我想得到4

使用简单的 AND 语句并不能解决这个问题。我已经问过几个人了,但我似乎无法解决这个看似简单的问题。

4

3 回答 3

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
于 2013-09-25T07:00:01.903 回答
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) 
于 2013-09-25T07:12:40.643 回答
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%

于 2013-09-25T07:08:41.160 回答