在SQL查询中使用带计数的DISTINCT关键字

时间:2018-08-25 05:03:10

标签: php sql mysqli

我有一个页面显示所有公司名称的列表(准确地说是45个)。

数据库表当前有43,815个结果,所以我只想显示没有重复的结果(这就是为什么我选择时使用DISTINCT的原因),但我也想计算每个公司有多少个结果并回显它们

我尝试使用count() as,但它会删除公司的所有结果,而只将总数(43,815)放进去。

我的问题是我该如何使用DISTINCT显示公司(因为我不想在页面上重复),然后又回显每个公司的总结果?

感谢您的帮助!

$servername = "localhost";
$username = "";
$password = "";
$dbname = "";

// Connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT DISTINCT company FROM ads ORDER BY company ASC";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {

       // Display the company name
       echo $row["company"];

       // I WOULD LIKE TO ECHO OUT HERE THE TOTAL OF EACH COMPANY HAS (COUNT) IN RESULTS!

    }
} else {
    echo "0 results";
  }
$conn->close();
?>

3 个答案:

答案 0 :(得分:3)

尝试:

SELECT
    company,
    COUNT(company)
FROM
    ads
GROUP BY
    company
ORDER BY
    company

答案 1 :(得分:3)

我认为您可能应该尝试使用<div class="main"> <h1 class="header-text"> ExampleTitle </h1> <p> Welcome to my website.</p> </div>子句。

在不知道表标记的情况下尝试使用此方法:

GROUP BY

答案 2 :(得分:1)

在SELECT查询中使用GROUP BY,这应该可以完成您想要的工作,这会将所有同一家公司归为一组并进行计数。

“从广告GROUP BY公司ORDER BY公司ASC中选择COUNT(公司)