2012-10-05 55 views
4

我有以下SQL查詢SQL IN語句總是真實

select * from tblArea where AreaDescription in ('Processing1','Geology 66','Site Infrastructure') 

目前它顯示的記錄,其中AreaDescription在( 'Processing1', '地質66', '站點基礎設施')

但我需要在查詢這將是永遠真實,顯示所有records.i值傳遞知道,我可以用where子句

where 1=1 

但在這裏我需要使用在statement.is這可能嗎?

+1

添加'或1 = 1'到查詢的末尾,你會得到從表中的所有記錄。 –

+0

是的它的工作。但沒有任何其他方式來做到這一點,無需修改當前查詢。我的意思是通過傳遞參數到查詢來實現這一點? – chamara

+0

背後的原因是目前我無法修改生產查詢,只允許修改傳遞給查詢的參數 – chamara

回答

16

我不明白爲什麼你需要它,爲什麼你不希望添加where 1=1或省略WHERE,但你可以這樣來做:

select * from tblArea 
where AreaDescription in 
(AreaDescription,'Processing1','Geology 66','Site Infrastructure') 

測試:http://sqlfiddle.com/#!3/6e15d/1/0

+0

太簡單了。如此優雅。 – RichardTheKiwi

+0

這很好。完全是解決方案。非常感謝您 – chamara

+3

儘管如此,並不一定會返回所有行。相當於'WHERE AreaDescription IS NOT NULL' –

1

如果你希望你的查詢總是true

  • 刪除where子句
  • 或添加OR 1=1
+1

你不明白這個問題 – RichardTheKiwi

0

select * from tblArea where AreaDescription in (select AreaDescription from tblArea)