如何使用周数选择唯一记录 ID 的 MYSQL PHP

杰夫所罗门

不确定我的标题是否准确地解释了我想要做的事情,但这是我的用例:

我有一个 Id 的数据库1 = n,我们称之为 500 条记录。

我想首先在 PHP 中获取周数,$week = date('W')所以本周是48.

然后我想返回 3 个独特的 ID,这些 ID 将始终返回该周的相同 ID。所以例如。

Week 1 = Id's 1,2,3
Week 2 = Id's 4,5,6
Week 3 = Id's 7,8,9
Week 4 = Id's 10,11,12
Week 5 = Id's 13,14,15
Week 6 = Id's 16,17,18

等等。

我的方法是从第 1 周开始,指定 3 个 Id,然后将第 2 周的周乘以 2,然后每个后续周继续乘以 2 并$i = 1每周添加并每周递增,然后$i++从起始号码。我下面的解决方案似乎有效,但感觉有点假。

$weeks = array(1,2,3,4,5,6,7);
$output_arr = array();
$ids_arr = array();
$id1 = 1;
$id2 = $id1 + 1;
$id3 = $id1 + 2;
$i = -1;
foreach ($weeks as $week) {
    if ($week == 1) {
        $ids = array($id1, $id2, $id3);
        $ids = implode(', ', $ids);
    } else {
        $id1 = $week * 2 + $i;
        $id2 = $id1 + 1;
        $id3 = $id1 + 2;
        $ids = array($id1, $id2, $id3);
        $ids = implode(', ', $ids);     
    }
    $output_arr[$week] = $ids;
    $i++;
}

所以我的最终结果是:

$output_arr = Array ( [1] => 1, 2, 3 [2] => 4, 5, 6 [3] => 7, 8, 9 [4] => 10, 11, 12 [5] => 13, 14, 15 [6] => 16, 17, 18 [7] => 19, 20, 21 )

这是我想要的,但有更简单的清洁方法吗?而且,BONUS HELP NEEDED如果它可以处理具有非顺序 Id 的表会好得多。在我的情况下,我的 ID 需要是连续的,如果我在 Id 的 EX 中有中断:1,2,3,4,6,7,8,10它会弄乱输出数组。

谢谢您的帮助。

米克马克库萨

或者,如果您没有被一些 SQL 魔法吓到,您可以在查询中编写一个用户定义的变量,以便所有信息都可以在结果集中随时可用。

SQL ( SQL 演示)

SELECT 
  CEIL(r / 3) AS WeekId, GROUP_CONCAT(id) AS Ids
FROM (
  SELECT  
    @rowid := @rowid + 1 AS r, id
  FROM tableA
  CROSS JOIN (
    SELECT @rowid := 0
  ) cjoin
) sub
GROUP BY WeekId

输出:

| WeekId | Ids   |
| ------ | ----- |
| 1      | 1,2,3 |
| 2      | 4,6,7 |
| 3      | 8,10  |

现在,如果您实际上并不打算使用数据库表的每一行,那么最佳实践表明您应该只检索您打算使用的数据。

要访问一组 3 个 ID,请使用 php 确定当前周数,将其除以 3,将该数四舍五入为下一个整数,然后减去一个,以便查询中的 LIMIT 子句使用0(对于 week 1)作为目标id 1, 2, 和3; 1(对于周2)目标 ids 4, 6, 7; 等等。

代码:(SQL 演示

$limit_offset = ceil(date('W') / 3) - 1;
$query = "SELECT id FROM your_table ORDER BY id LIMIT $limit_offset, 3";

ps 我没有使用纯 SQL 来执行这个任务的原因是:我可以在 LIMIT offset 中使用 MySQL 函数

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在mysql中仅选择唯一记录

来自分类Dev

MySQL在两列上选择唯一记录

来自分类Dev

PHP选择MYSQL从数组中选择ID

来自分类Dev

在PHP中进行选择-寻找ID MySQL

来自分类Dev

PHP / MySQL按ID选择内容

来自分类Dev

PHP MySQL更新具有新的唯一ID

来自分类Dev

PHP MySQL更新具有新的唯一ID

来自分类Dev

MySQL查询以查找唯一记录

来自分类Dev

MySQL:批量更新唯一记录

来自分类Dev

INSERT查询唯一记录-MySQL

来自分类Dev

MySQL-返回唯一记录

来自分类Dev

Mysql唯一记录2列

来自分类Dev

PHP MySQL PDO选择ID为ID的数组上的行

来自分类Dev

如何防止在 php/mysql 中为具有唯一 id 的特定用户重复输入

来自分类Dev

MySQL根据优先级逻辑选择唯一记录

来自分类Dev

如何使用PHP复制mysql记录并使用不同的id保存?

来自分类Dev

Mysql唯一记录,其中存在多个记录

来自分类Dev

Mysql唯一记录,其中存在多个记录

来自分类Dev

PHP MYSql:使用一个id更新多行

来自分类Dev

如何基于mysql中的一列获取唯一记录

来自分类Dev

如何使用过程php从mysql获取user_id?

来自分类Dev

为每个唯一 id 获取 mysql 表的多列,并使用 PHP 在 HTML 表的单行中为每个唯一 id 回显结果

来自分类Dev

如何使用php从MySql数据库中选择某个ID

来自分类Dev

MySQL PHP-在哪里选择ID = array()

来自分类Dev

从MYSQL中选择某些ID并另存为PHP Vars

来自分类Dev

如何选择尚未使用php和mysql提交记录的用户?

来自分类Dev

MySQL查询查找唯一记录

来自分类Dev

mysql标记2张表之间的唯一记录

来自分类Dev

php Mysql错误未知ID