SELECT 1和SELECT COUNT(1)在Oracle SQL中做了什么?

时间:2016-12-29 22:06:28

标签: sql oracle

所以我今天刚刚接受了一个java开发人员职位的采访,他们问我这个问题

你能说出

的区别吗?
SELECT 1 FROM table
SELECT count(1) FROM table
SELECT count(*) FROM table

我查了一下堆栈溢出但找不到满意的答案。我是一名具有SQL知识的Java开发人员,已经有几年了,但从来没有使用像Select 1这样的不熟悉的语句或者选择count(1)

这也是整个问题。即,这些查询不是任何更大查询的一部分。

你能帮我解决一下这个问题吗?

1 个答案:

答案 0 :(得分:5)

SELECT 1 FROM table

返回1的次数与table中的记录一样多。

SELECT count(1) FROM table

将返回table中所有记录的计数。

SELECT count(*) FROM table

与上述相同。

Oracle将

*用作提示(技术上不是提示,但类似),因此它允许它选择最佳索引来计算计数。这与select count(1)...的主要区别 类似地,这与WHERE EXISTS (SELECT 1 FROM ...)WHERE EXISTS(SELECT * FROM ...) 背后的想法相同。此语句对于现代Oracle RDBMS引擎是no longer relevant