2

次のクエリがあるとします。

select * 
from myTable
where myTable.myCol in (1,2,3)

私はそれをしたいと思います:

with allowed_values as (1,2,3)
select * 
from myTable
where myTable.myCol in allowed_values

最初の行に構文エラーが表示されます。修正を手伝ってもらえますか?

4

4 に答える 4

6

あなたの構文に最も近いと思います:

WITH allowed_values (id) AS 
  ( VALUES
      (1), (2), (3)
  )
SELECT * 
FROM myTable
WHERE id IN 
   (TABLE allowed_values) ;

SQLフィドルでテスト済み

于 2013-04-05T19:14:32.507 に答える
2

試す

with allowed_values as (select 1 as tst union all select 2 union all select 3)    
select * from myTable a
inner join c1 b ON (b.tst = a.myCol)
于 2013-04-05T15:48:23.887 に答える
2

最も簡単な方法は、共通テーブル式を修正してから、副選択で使用することです。

with allowed_values as (
  select 1 id
  union all
  select 2
  union all
  select 3
)
select * from myTable
where myTable.id in (select id from allowed_values)
于 2013-04-05T19:03:16.573 に答える