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 に答える