一个返回数值的 mySQL 计数查询?

Posted

技术标签:

【中文标题】一个返回数值的 mySQL 计数查询?【英文标题】:A mySQL count query to return a numeric value? 【发布时间】:2012-04-02 17:56:10 【问题描述】:

我建立了一个包含数百名客户的数据库,他们都是独一无二的。但是,如果某些客户是家庭的一部分,则它们是联系在一起的。例如

我有一个关联这些客户的家庭 ID,例如A. Jones 女士的客户编号为 005,B.Jones 先生的客户编号为 017,由于他们是相关的,因此我为他们分配了家庭 ID 001。

我在网上搜索过,但似乎没有任何地方可以帮助我了解如何进行某种 mysql 计数来回显 WHERE familyID = 001 的人数。

另外,考虑到家庭ID = 001 的 mySQL 搜索条件,有什么方法可以返回两个单独的客户记录。

非常感谢,

汤姆。

编辑:意识到我会放乘客而不是顾客,我的错!此外,这些名称是出于明显的 DPA 原因而编造的 :)

【问题讨论】:

你能发布样本数据和所需的o/p吗? 乘客记录??这位乘客是从哪里来的……你说的是客户吧? 【参考方案1】:

你想要COUNT() 函数

SELECT count(*) AS count FROM customers WHERE familyID="001"

您可以将* 替换为列名,这样会更快一些。

【讨论】:

【参考方案2】:
$sql='SELECT count(familyID) AS count FROM customers WHERE familyID="001"';

这里可以获取familyID=001的客户数​​量

但是这位乘客是从哪里来的呢?与客户有什么关系?

如果是关于客户而不是乘客,那么

 $sql='SELECT * FROM customers WHERE familyID="001"';
    $query=mysql_query($sql);
    $count=mysql_num_rows($query);
    while($fetch_arr=mysql_fetch_array($query))
      $familyName=$fetch_arr['name'];
      echo  $familyName;
     

您可以从 * 获取所有记录,从 $count 可以获取客户数量

【讨论】:

【参考方案3】:

这种情况下可以使用count函数,可以作为。

Select count(*) form TABLE NAME where familyID = "001"

【讨论】:

【参考方案4】:

如果您想要唯一记录和计数,请使用 OVER 函数:

SELECT customers.id, 
    customers.additional_columns, 
    count(1) OVER (PARTITION BY familyID) AS count 
FROM customers

【讨论】:

【参考方案5】:

你可以做类似的事情

$result = mysql_query("SELECT * FROM families where familyID='001'", $link);
$num_rows = mysql_num_rows($result);

source

【讨论】:

【参考方案6】:

对于你的第一个问题,这样就可以了

$result = @mysql_query("SELECT * FROM tbl_name WHERE familyID = '001'");
echo mysql_num_rows($result); //This line should display the count

【讨论】:

-1 以完全无用和不需要的方式使用 @ 运算符。

以上是关于一个返回数值的 mySQL 计数查询?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 如何在一个语句中更新一个数值后返回该值 -- 自增长种子竞态问题处理

MySQL查询仅返回具有计数的重复条目

mySQL 返回错误的计数结果

mysql - 在另一个查询中嵌入计数查询

如何在 Gorm 中留下连接子查询计数

返回peewee ORM中分组项目的计数