php - 如果一列具有重复值,则将表的行标记为重复

标签 php mysql codeigniter

我有一个表 caller,它跟踪我收到的所有电话。这些列是 "phone"、 "time"和 "ID" 然后我将它们显示在网页上。现在我想显示 (Repeat) 的电话号码已经打了两次或更多次。 现在我正在使用以下查询。

SELECT `Phone`, `Id`, `time` 
FROM callers
GROUP BY phone
ORDER BY `time` DESC 

此查询仅返回调用过两次的电话一次。我想尽可能多地展示这些电话。只想在每个重复的手机前写一个(R)。 我正在使用 Codeigniter 框架和 PHP。

例子(我想要的)

ID       Phone          Time
1        789654 (R)      3:40
2        789654 (R)      3:30
3        123456          2:00
4        012344          1:00

上面的查询给了我什么

ID       Phone          Time
1        789654 (2)      3:40
2        123456          2:00
3        012344          1:00

最佳答案

您需要与列出数字分开计算有关重复的信息。下面是一个使用 LEFT JOIN 的方法:

SELECT c.*, cc.RepeatFlag
FROM callers c LEFT JOIN
     (SELECT `Phone`, 'R' as RepeatFlag
      FROM callers
      GROUP BY phone
      HAVING cnt > 1
     ) cc
     ON cc.phone = c.phone
ORDER BY `time` DESC ;

这使用了一点技巧。子查询只返回有重复的电话。对于这些,它设置了 RepeatFlag。对于不匹配,这是 NULL。您可以从 callers 中选择您想要的任何列作为其余列。

关于php - 如果一列具有重复值,则将表的行标记为重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31917893/

相关文章:

php - 如何向子句内插sql的值数组?

php - 使用 php 和 jquery ajax 从 mysql 数据库获取数据?

python - mysql-connector-python cursor_cent.py 文件上的 Django 迁移错误 'TypeError: sequence item 1: expected a bytes-like object, str found'

java - 如何在 SWT 中按列对表进行排序

php - 使用 PHP 将数据从可点击的表格行传递到详细信息页面

javascript - 全尺寸 AmCharts

php - Docker和容器之间的连接

php - 将 Ajax 数据发布到 Controller 功能?

javascript - 我如何在 Codeigniter 中处理 pdf 格式的文件下载?

php - codeigniter 默认 Controller url 路由