2012-11-24 46 views
0

我目前正在学习如何在PHP MySQL中构建一个站点。但是,我似乎不明白COUNT() as count,并不介意进一步的解释。了解COUNT()为`count`

我得到COUNT,0 || 1的原理,以及它如何返回与该查询有关的所有值。

但是,没有看到计数如何工作。无论如何,这就是我正在写的代码 - 所以我们有一个工作的例子 - 我最初变得困惑的地方。

"SELECT COUNT(id) as count, id 
FROM user 
WHERE email='$email' AND password='".md5$password."'" 
+1

只是一个方面的注意事项:小心你逃避你注入查询的变量。它看起来像你的代码是广泛的'sql注入'。最好的是使用像PDO这样的解决方案,而不是试图重新制定一个逃避策略。 – arkascha

+0

感谢您的提示,我将real_escape函数中的电子邮件,md5将没事 - 没错。 – edlee

回答

2

这就是所谓它有时被用来展现出更加吸引人的列标题,用户或调用代码别名

SELECT COUNT(`id`) as `count`.... 

将打印

count 
-------- 
5 

别名站立作为列标题,而不是任意字符串:See the SQLFiddle to see the difference

从小提琴中可以看到标题栏看起来像某种方式,例如

count(*) 
-------- 
5 
2

使用Count()您可以计算结果集的返回行数。双方还MySQL官方文档中关于count

数据库经常被用来回答这个问题,“多久某种类型的数据表中的发生?”例如,你可能想知道有多少宠物每个拥有者有多少只宠物,或者您可能想对您的动物进行各种普查操作。

计算您拥有的动物总数与“宠物表中有多少行?”相同,因为每只宠物只有一条记录。 COUNT(*)计算的行数,所以查询到算你的动物看起来是这样的:

SELECT COUNT(*) FROM pet;

AS count的一部分意味着该科拉姆会得到,你可以使用例如一个名字在PHP中。请参见w3schools上的此消除处理:

您可以使用别名为表或列指定另一个名称。如果您有很长或复杂的表名或列名,这可能是一件好事。

别名可以是任何东西,但通常很短。

+0

我想这个问题也是指“as count”部分。这意味着你可以将结果引用为'count'! – Smamatti

+0

我添加了一行。但是我没有在官方网站上找到更好的解释。我会继续寻找。 – rekire

0

如果运行这个SQL:

SELECT COUNT(id), id .... 

你会得到$row['numberofrecordshere']这将是非常困难的回声(做* _fetch_assoc后)(或者在比较中使用),除非你知道多少记录会有(这违背了这一结果的目的,反正)

返回它作为计数可以让你得到它产生的阵列中使用$row['count']

1

as count只是一个别名。您可以使用as来选择任何字段或方法。这意味着你要更改数据集中返回的列的名称。

SELECT `field` as another_name 

所以:

SELECT COUNT(*) as `count` 

只需重命名从COUNT(*)的列count使其更容易与无论您在什么maniuplating结果集的工作。

它还使您可以更轻松地访问您当前的查询。很多人会做以下的大表名:

SELECT * FROM `table_with_ridiculous_name` as twrn WHERE twrn.id = 1 
+0

伟大的帮助谢谢 – edlee

+0

@edlee不用担心:)你也可以为许多SQL实现做以下操作 - 但是它通常比'as'关键字更令人困惑。 'SELECT field fieldalias'基本上完全忽略了'as'关键字。 – Pebbl