sql - 在CTE中建立定义值的列表

标签 sql oracle common-table-expression

有什么方法可以为硬编码值列表构建CTE?例如,我有一个已知ID的列表(即101,102,105,200 ...),我如何能够用称为ID的一列创建CTE,但所有ID值都在查询中进行了硬编码?顺便说一句,我需要在Oracle中运行此查询。谢谢!

最佳答案

你可以做类似的事情

WITH cte AS (
  SELECT 101 id FROM dual UNION ALL
  SELECT 102 FROM dual UNION ALL
  SELECT 105 FROM dual UNION ALL
  SELECT 200 FROM dual UNION ALL
  ...
)


但是,根据您实际要完成的工作,您可能想要声明一个集合并使用该集合(有或没有解析逗号分隔字符串的函数)

CREATE TYPE num_tbl
    AS TABLE OF NUMBER;

WITH cte AS (
  SELECT column_value
    FROM TABLE( num_tbl( 101, 102, 105, 200 ))
)

关于sql - 在CTE中建立定义值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22850382/

相关文章:

sql - 如何执行 CTE 中生成的查询

oracle - 将 Delphi/Oracle 应用程序从 2 层更改为 3 层

sql - CTE中查询的计算字段很慢,如何优化

mysql - 除以下顺序外

php - 从数据库PHP计算大数据

string - Oracle:获取部分字符串匹配的长度

oracle - 将过程中的值传递给 Select 语句

MySQL 错误 "' WITH' 在此位置对于需要 ALTER、ANALYZE 的服务器版本无效...”

sql - 特定列的postgresql(redshift)最大值

mysql - MySQL 中的多个连接