为什么这两个查询返回不同的结果?

时间:2019-03-26 09:22:45

标签: sql oracle oracle10g

我有这两个查询,它们返回不同的行数。当我们计算第二个查询中的行时,结果将与第一个查询相同。但这显示了不同的结果。我要知道为什么

  1. select count(*) from dual
  2. select * from dual

1 个答案:

答案 0 :(得分:1)

*的意思是“所有内容”。所以基本上这个查询:

select * from dual

手段“向我展示一切双重”。 计数字面意思是“算我一件东西的数量”

count(*)

是要数一切!

以这个为例:

create table example (id int(1), ex1 varchar(15), ex2 varchar(15), ex3 varchar(15));
insert into example values(1, 'whatever11', 'whatever12', 'whatever13');
insert into example values(2, 'whatever21', 'whatever22', 'whatever23');
insert into example values(3, 'whatever31', 'whatever32', 'whatever33');

因此select *的意思是向我显示插入的所有3行以及所有值:

enter image description here

但是select count(*)的意思是向我显示行数。在这种情况下,id为1,id 2和id为3的行有3行,因此结果为3!

enter image description here