Bla*_*iev 154 sql select constants
在SQL语句中选择常量而不引用表是完全合法的:
SELECT 1, 2, 3
Run Code Online (Sandbox Code Playgroud)
后者返回的结果集是包含值的单行.我想知道是否有一种方法可以使用常量表达式一次选择多行,有点像:
SELECT ((1, 2, 3), (4, 5, 6), (7, 8, 9))
Run Code Online (Sandbox Code Playgroud)
我希望像上面这样的东西工作并返回一个包含3行和3列的结果集.
Dew*_*wfy 181
SELECT 1, 2, 3
UNION ALL SELECT 4, 5, 6
UNION ALL SELECT 7, 8, 9
Run Code Online (Sandbox Code Playgroud)
Qua*_*noi 109
在PostgreSQL
,您可以这样做:
SELECT *
FROM (
VALUES
(1, 2),
(3, 4)
) AS q (col1, col2)
Run Code Online (Sandbox Code Playgroud)
在其他系统中,只需使用UNION ALL
:
SELECT 1 AS col1, 2 AS col2
-- FROM dual
-- uncomment the line above if in Oracle
UNION ALL
SELECT 3 AS col1, 3 AS col2
-- FROM dual
-- uncomment the line above if in Oracle
Run Code Online (Sandbox Code Playgroud)
在Oracle
,SQL Server
和PostgreSQL
,您还可以生成任意行数的记录集(可以使用外部变量提供):
SELECT level
FROM dual
CONNECT BY
level <= :n
Run Code Online (Sandbox Code Playgroud)
在Oracle
,
WITH q (l) AS
(
SELECT 1
UNION ALL
SELECT l + 1
FROM q
WHERE l < @n
)
SELECT l
FROM q
-- OPTION (MAXRECURSION 0)
-- uncomment line above if @n >= 100
Run Code Online (Sandbox Code Playgroud)
在SQL Server
,
SELECT l
FROM generate_series(1, $n) l
Run Code Online (Sandbox Code Playgroud)
在PostgreSQL
.
big*_*can 14
对于 Microsoft SQL Server 或 PostgreSQL,您可能想尝试这种语法
SELECT constants FROM (VALUES ('foo@gmail.com'), ('bar@gmail.com'), ('baz@gmail.com')) AS MyTable(constants)
您还可以在此处查看 SQL Fiddle:http ://www.sqlfiddle.com/#!17/9eecb/34703 /0
Sus*_*tta 11
尝试使用oracle中的connect by子句,类似这样
select level,level+1,level+2 from dual connect by level <=3;
Run Code Online (Sandbox Code Playgroud)
有关connect by子句的更多信息,请访问以下链接:删除URL,因为oraclebin站点现在是恶意的.
Tre*_*reg 11
以下VALUES
命令在PostgreSQL中为我工作:
VALUES (1,2,3), (4,5,6), (7,8,9)
Run Code Online (Sandbox Code Playgroud)
这是直接使用 MySQL 请求创建自定义行的方法SELECT
:
SELECT ALL *
FROM (
VALUES
ROW (1, 2, 3),
ROW (4, 5, 6),
ROW (7, 8, 9)
) AS dummy (c1, c2, c3)
Run Code Online (Sandbox Code Playgroud)
给我们一张桌子dummy
:
c1 c2 c3
-------------
1 2 3
4 5 6
7 8 9
Run Code Online (Sandbox Code Playgroud)
测试用MySQL 8
甲骨文 感谢这篇文章PL / SQL-在“子句中的位置”中使用“列表”变量
我将示例语句放在一起,以轻松地手动输入值(在测试人员测试应用程序时可以重复使用):
WITH prods AS (
SELECT column_value AS prods_code
FROM TABLE(
sys.odcivarchar2list(
'prod1',
'prod2'
)
)
)
SELECT * FROM prods
Run Code Online (Sandbox Code Playgroud)