php - MYSQL/PHP : Select identical numbers in different rows

标签 php mysql

我有一个 PHP 应用程序,我从这样组成的 MYSQL 表中加载数字:

日期 | BA1 | BA2 | BA3 | BA4 | BA5 2014年8月1日 1 8 66 34 89 2014年7月1日 45 32 1 48 67 2014年6月1日 17 8 90 35 31 2014年5月1日 19 12 75 31 64 2014年4月1日 32 43 18 21 67 ...

等等。

此时我必须找到最多 12 行中的重复数字(12 行一个接一个)。

在上面的示例中,我应该得到数字 183267(因为该数字出现在第 1、2 和 5 行。如果这些数字没有出现在接下来的 12 行中,则操作必须完成。

我正在使用 PHP,我不确定实现此目的的最佳方法是在加载 MYSQL 后通过 PHP 还是直接在 MYSQL 中完成。

我该如何解决这个问题?

我必须加载数组中的所有数字(每一行一个),然后执行一个函数,或者我应该在 PHP 中加载一些结果?

最佳答案

在 php 中,您可以创建 2 个数组,一个用于数字,一个用于相同的数字,假设您的查询将是

select * from table order by date limit 12

在 php 中获取结果后,您可以循环查询结果并找到相同的数字

$numbers=array();
$identicals=array();
foreach($results as $result){

    if (in_array($result['BA1'], $numbers)) {
    $identicals[]=$result['BA1'];
    }else{
    $numbers[]=$result['BA1'];
    }
/* same if else for BA2,BA3,BA4 and BA5 */
}

print_r($identicals);

只有使用Mysql才可以使用union all

SELECT num FROM(
(SELECT BA1 num FROM table1 ORDER BY `DATE` LIMIT 12)
UNION ALL
(SELECT BA2 num FROM table1 ORDER BY `DATE` LIMIT 12)
UNION ALL
(SELECT BA3 num FROM table1 ORDER BY `DATE` LIMIT 12)
UNION ALL
(SELECT BA4 num FROM table1 ORDER BY `DATE` LIMIT 12)
UNION ALL
(SELECT BA5 num FROM table1 ORDER BY `DATE` LIMIT 12)
) a
GROUP BY num
HAVING COUNT(num) > 1
ORDER BY num

DEMO

关于php - MYSQL/PHP : Select identical numbers in different rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30018934/

相关文章:

php - PHP/MySQL约会/预订系统的最佳实践

php - 如何为 PHP 安装 ffmpeg

php - echo 语句打印值 '1'

将数据库从 sqlite 更改为 mysql 时,Python manage.py 迁移错误

MySQL:使用单个表的多个属性将多个表连接到一个表

php - 在 php mysql 中插入具有相同 id 的逗号分隔值

mysql - VBA 错误 :`[Microsoft][ODBC Manager] Data source name not found and no default driver specified

javascript - 如何在 Controller 中发送 Ajax 数据

javascript - 在 php 中找不到值

php - 难题 - 如何从 PHP 中提取图像的 'colorify' 部分?