【问题标题】:How to compare the current row to the next row of a mysql table in php如何在php中将当前行与mysql表的下一行进行比较
【发布时间】:2015-09-03 05:29:29
【问题描述】:

我想将当前行与下一行进行比较,以检查当前行的第三列是否与下一行相同。如果不是,则当前行索引将调整为新的当前行并再次检查下一行。我想在php 中执行此操作。谁能帮帮我。

更新:

ID    |   Date    | Time
------+-----------+-------
00091 | 2015-1-20 | 08:05
00091 | 2015-1-20 | 17:10
00099 | 2015-1-20 | 07:45
00099 | 2015-1-20 | 17:42

我的预期输出是:

ID    |   Date    |    Time
------+-----------+-------------
00091 | 2015-1-20 | 08:05 17:10
00099 | 2015-1-20 | 07:45 17:42

【问题讨论】:

  • 请用示例数据和预期输出更新您的问题。
  • 我们正在处理哪些行和哪些列名?
  • 它们是 ID、日期和时间
  • 我仍然不知道您是如何得出预期输出的。我的理解是如果 ID 相同,您希望始终对应于同一行中的该 ID?我说的对吗?
  • 是的,它们是由每个日期定义的,也意味着在一个日期内用户必须至少有 1 次,最多 4 次。

标签: php mysql compare


【解决方案1】:

这看起来像一个糟糕的数据库设计,所以我会强烈建议更改它!拥有重复的 ID 让我深受伤害。

但是,这里有一个 MySQL 查询可以得到你想要的结果:

SELECT `ID`, `Date`, CONCAT(MIN(`Time`), ' ', MAX(`Time`)) AS `Time`
FROM `test`
GROUP BY `ID`, `Date`;

【讨论】:

  • 顺便说一句,您也可以使用 PHP 连接/加入这些字段,但在 SQL 查询中这样做会更容易和更快。
  • 1是什么意思?
  • 对不起,忽略WHERE 1 - 它不会影响输出。
  • 顺便说一句,也不确定这些字段的数据类型,因此您的查询结果可能会有所不同。
  • 如何通过php做到这一点?
猜你喜欢
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多