![]() |
||
|
*停權中*
加入日期: Apr 2005
文章: 17
|
SQL語法求助
假定一個tableA如下
f1 f2 f3 1 'a' '01' 2 'a' '01' 3 'b' '01' 4 'b' '02' 5 'a' '02' 6 'b' '02' ................... 條件為 (f2,f3) 屬於集合 ( ('a','01'),('b','01'),('b','02) )時挑出f1,f2,f3 我寫一個SQL如下 select f1,f2,f3 from tableA where (f2,f3) in ( ('a','01'),('b','01'),('b','02') ); 出現了語法錯誤訊息 請問如何修改才能達成需求? |
|||||||
|
|
|
Major Member
![]() 加入日期: Apr 2002
文章: 184
|
我的直覺是這樣
select f1,f2,f3 from tableA where (f2,f3) in { ('a','01'),('b','01'),('b','02') }; 不過還是請你把錯誤訊息整個貼出來才準 此文章於 2009-12-07 09:07 AM 被 tc1st910437 編輯. |
||
|
|
|
Master Member
![]() ![]() ![]() ![]() 加入日期: Nov 2002 您的住址: 熱火爐
文章: 2,289
|
select f1,f2,f3 from tableA where f2||'_'||f3 in('a_01','b_01','b_02')
這樣呢∼
__________________
簽名檔及個人圖示設定關閉中 |
|
|
|
*停權中*
加入日期: Apr 2005
文章: 17
|
引用:
我試過你改的語法,錯誤訊息和我原先的一樣 [Microsoft][ODBC SQL Server Driver][SQL Server]行 1: ','附近語法不正確 |
|
|
|
|
*停權中*
加入日期: Apr 2005
文章: 17
|
引用:
Bingo!這個解法可行 資料型態皆是字串是可以順利擺平 如果又混雜了如日期,數字,TrueFalse等型態時 我可能要用and 及 or等土法鍊鋼慢慢把條件寫完 不知有無更優美的寫法? |
|
|
|
|
Master Member
![]() ![]() ![]() ![]() 加入日期: Nov 2002 您的住址: 熱火爐
文章: 2,289
|
用to_char
oracle有這語法,其他的得自行看看
__________________
簽名檔及個人圖示設定關閉中 |
|
|
|
Power Member
![]() ![]() 加入日期: Jan 2001 您的住址: Taipei
文章: 503
|
select tableA.f1,tableA.f2,tableA.f3 from tableA
inner join ( select 'a' as f2,'01' as f3 union select 'b' as f2,'01' as f3 union select 'b' as f2,'02' as f3 ) as TableB on TableA.f2 = TableB.f2 and TableA.f3 = TableB.f3 效能可能不怎麼樣,就只是看起來比較直覺而已
__________________
|
|
|
|
*停權中*
加入日期: Apr 2005
文章: 17
|
引用:
這個寫法實在太黯然,太銷魂了 超過我的理解能力 |
|
|
|
|
Basic Member
加入日期: Oct 2003
文章: 18
|
引用:
基本上, 這位大大是建立一個條件的 table, 再 join 它, 利用它當條件來篩選出符合的資料 |
|
|
|