是每个SELECT语句中必需的FROM子句吗?谢谢..
答案 0 :(得分:14)
答案 1 :(得分:7)
不在MySQL,没有。你可以这样做:
SELECT 1 + 1;
虽然它会出现在某些DBMS中 - 例如,Oracle会要求你这样做:
SELECT 1 + 1 FROM DUAL;
答案 2 :(得分:1)
没有。你很容易做到
SELECT 1+1
答案 3 :(得分:0)
(编辑:错过了MYSQL标签。)
这取决于数据库。
在Oracle,IIRC中,需要来自。但是Oracle有一个表DUAL,它总是返回一行,用于在SELECT子句中完成所有工作的情况。
另一方面,SQL Server不需要FROM,只需选择它就可以返回变量的值:
SELECT @myVar
答案 4 :(得分:0)
正如ocedecio所提到的,在每个陈述中都不需要。
例如,我倾向于使用以下语法初始化具有数据的表
insert into status(code, description)
select 'O', 'Open'
union all select 'C', 'Closed'
union all select 'P', 'Parked'
等。
编辑(以下是gamecat的评论)
上面的示例演示了SELECT FROM without FROM可能具有实际用途。 你当然可以打电话:
select 'O', 'Open'
union all select 'C', 'Closed'
union all select 'P', 'Parked'
答案 5 :(得分:0)
基本上在SQL server 2005中,标量值函数和系统函数不需要FROM关键字,但它对于表值函数是必需的。
标量值函数可以执行,如下面的语法
选择functionname(arguments)
表值函数可以执行,如下面的语法
从functionname(arguments)中选择*
否则
从functionname(argument1,argument2)
中选择col1,col2答案 6 :(得分:0)
实际上," SELECT 1 "和" SELECT 1 FROM DUAL "在最新版本的MySQL中工作。
有趣的是," SELECT 1 WHERE 1 = 1 "需要一个FROM子句:" SELECT 1 FROM DUAL WHERE 1 = 1 "很好。在其他平台上,如PostgreSQL," SELECT 1 WHERE 1 = 1 "工作正常。
另一个奇怪之处:" SELECT 1 FROM DUAL GROUP BY 1 HAVING 1 = 1 "适用于MySQL 5.7,但在MySQL 5.5中失败。
不同平台中必需/可选FROM子句的摘要: