如何回答这个问题?从表中选择 SUM(1)

问题描述 投票:0回答:3

select * from "Test"."EMP"

id
1
2
3
4
5
Select SUM(1) FROM "Test"."EMP";
Select SUM(2) FROM "Test"."EMP";
Select SUM(3) FROM "Test"."EMP";

为什么这些查询的输出是?

5
10
15

还有 我不明白为什么他们这样写表名“Test”.“EMP”

mysql sql database mysql-workbench sql-query-store
3个回答
0
投票

你的表有5条记录。语句

select 1 from test.emp
返回 5 条记录,所有 5 条记录的值为 1。

id
1
1
1
1
1

这是因为数据库引擎只是为每个现有记录返回 1,而不读取单元格的内容。

select <any static value> from test.emp

也会发生同样的情况

2 和 3 也会发生同样的情况

id
2
2
2
2
2

因此返回了 5 条带有静态值的记录,这些值的总和将是 select 语句中传递的

product
和表中的
static number
total records

额外事实:始终建议执行

count(1)
而不是
count(*)
,因为它消耗的资源更少,因此服务器上的负载也更少


0
投票

我不认为它是带双引号的

 "Test"."EMP"
..它可能是带反引号的
`Test`.`EMP`
。定义的意思是它的
database_name.table_name
。这是从
table_name
获取正确
database_name
的推荐格式;在本例中,您专门制定了从
`Test`.`EMP`
进行查询的语法。阅读有关标识符限定符的更多信息。

至于

SUM(x)
x
获取根据表中存在的行重复。因此 5 行上的
SUM(1)
1+1+1+1+1
,5 行上的
SUM(2)
2+2+2+2+2
,依此类推。


0
投票

这是非常典型的

SQL
面试问题,普遍会被问到。 人们对 1,2,3 的
sum
感到困惑。实际上,它是所有行的总和,每行考虑 1,类似地考虑 2,而不是 ID 值为 1 的第一行的
sum

所以 1 的

sum
就是

(1+1+1+1+1) =5

(2+2+2+2+2) =10

(3+3+3+3+3) =15

© www.soinside.com 2019 - 2024. All rights reserved.