![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 七嘴八舌異言堂
(https://www.pcdvd.com.tw/forumdisplay.php?f=12)
- - SQL語法求助
(https://www.pcdvd.com.tw/showthread.php?t=878344)
|
|---|
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') ); 出現了語法錯誤訊息 請問如何修改才能達成需求? |
我的直覺是這樣
select f1,f2,f3 from tableA where (f2,f3) in { ('a','01'),('b','01'),('b','02') }; 不過還是請你把錯誤訊息整個貼出來才準 |
select f1,f2,f3 from tableA where f2||'_'||f3 in('a_01','b_01','b_02')
這樣呢∼ |
引用:
我試過你改的語法,錯誤訊息和我原先的一樣 [Microsoft][ODBC SQL Server Driver][SQL Server]行 1: ','附近語法不正確 |
引用:
Bingo!這個解法可行 資料型態皆是字串是可以順利擺平 如果又混雜了如日期,數字,TrueFalse等型態時 我可能要用and 及 or等土法鍊鋼慢慢把條件寫完 不知有無更優美的寫法? |
用to_char
oracle有這語法,其他的得自行看看 |
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 效能可能不怎麼樣,就只是看起來比較直覺而已 |
引用:
這個寫法實在太黯然,太銷魂了 超過我的理解能力 |
引用:
基本上, 這位大大是建立一個條件的 table, 再 join 它, 利用它當條件來篩選出符合的資料 |
| 所有的時間均為GMT +8。 現在的時間是10:24 PM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2025。