在SQL Server中可以执行SELECT,而无需引用表; 就像是:
Select 1.2 +3, 'my dummy string'
Run Code Online (Sandbox Code Playgroud)
由于Oracle不允许没有FROM的SELECT,我使用双表进行此类操作; 就像是:
Select 1,2+3, 'my dummy string' FROM DUAL
Run Code Online (Sandbox Code Playgroud)
有一种更好的方法来执行此类查询吗?使用双表是好的做法吗?
Qua*_*noi 76
不,Oracle没有SELECT没有FROM.
使用该dual表是一种很好的做法.
dual是一个内存表.如果您不从中进行选择DUMMY,它将使用特殊的访问路径(FAST DUAL),该路径不需要I/O.
曾几何时,dual有两个记录(因此名称),并打算作为一个虚拟记录集来复制加入的记录.
现在它只有一条记录,但你仍然可以用它生成任意数量的行:
SELECT level
FROM dual
CONNECT BY
level <= 100
Run Code Online (Sandbox Code Playgroud)
MySQL也支持dual(以及无语法).
不要忘记大多数时候你实际上并不需要使用SELECT.
代替:
SELECT sysdate INTO l_date FROM dual;
SELECT CASE WHEN i = j THEN 0 ELSE 1 END INTO l_foo FROM dual;
...
Run Code Online (Sandbox Code Playgroud)
您可以使用
l_date := sysdate;
l_foo := CASE WHEN i = j THEN 0 ELSE 1 END;
...
Run Code Online (Sandbox Code Playgroud)