【问题标题】:Combine MySQLi rows and add counter?合并 MySQLi 行并添加计数器?
【发布时间】:2012-07-18 00:39:43
【问题描述】:

我引用了一个收集简单信息的简单数据库。创建相同条目的可能性很高。

$sql = "INSERT INTO track_table (sitename, affiliate, refferal) values ('$sitename', '$affiliate', '$refferal')";

在单独的页面上,我拉出一份报告

$result = $mysqli->query("SELECT sitename, affiliate, refferal FROM track_table") 
    or die("Problem executing query.");
    print "<table border=1>\n";
    print "<tr><td><b>SITENAME</b></td><td><b>AFFILIATE</b></td><td><b>REFFERAL</b></td></tr>";
    while ($row = $result->fetch_array()) {
        echo "<td>", $row['sitename'], "</td><td>", $row['affiliate'], "</td><td>", $row['refferal'], "</td></tr>\n"; 
    }
echo "</table>\n";

这个输出

SITENAME ------------ AFFILIATE ------------- REFFERAL

foo.com ---------------12345------------------bar.com

foo.com ---------------12345------------------bar.com

abc.com ---------------98765------------------xyz.com

如您所见,我可以有 2 个相同的条目。有没有办法可以计算出 1 和 2 完全相同,所以不显示它们,但可能在显示 (2) 的新列中

SITENAME ------------ AFFILIATE ------------- REFFERAL-------COUNT

foo.com ---------------12345------------------bar.com---------(2)

abc.com ---------------98765------------------xyz.com---------(1)

【问题讨论】:

  • referral 的通常拼写是一个 f。
  • 我知道这一点。这是我开始时的一个错字,一旦我让这张桌子工作,最终会改变。谢谢你的obv。虽然^^

标签: php mysql database mysqli


【解决方案1】:

使用分组方式:

SELECT sitename, affiliate, refferal, COUNT(*) AS cnt
FROM track_table
GROUP BY sitename, affiliate, refferal

如果您不需要计数列,那么您可以改用SELECT DISTINCT

SELECT DISTINCT sitename, affiliate, refferal
FROM track_table

【讨论】:

  • 美丽。简直美极了。非常感谢它就像一个魅力:) - 当它允许我时,我会在 6 分钟内接受它^^
【解决方案2】:

在您的 2 列上添加一个唯一键,并将您的查询更改为:

INSERT IGNORE INTO

并在创建时添加一个验证器,该验证器将检查您要插入的值是否存在于您的表中。

【讨论】:

    猜你喜欢
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    相关资源
    最近更新 更多