我有这两个查询,它们返回不同的行数。当我们计算第二个查询中的行时,结果将与第一个查询相同。但这显示了不同的结果。我要知道为什么
select count(*) from dual
select * from dual
答案 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行以及所有值:
但是select count(*)
的意思是向我显示行数。在这种情况下,id为1,id 2和id为3的行有3行,因此结果为3!