如何一条一条选择记录而不重复

2023-12-12

select id, name from customer order by random() limit 5;

上述查询选择随机记录。但是它会重复行。我只想每次选择一行而不重复。假设我的 id 为 1 到 5。第一次我想选择 1,第二次查询显示 2,然后是 3,4 和 5。序列完成后,它会再次从 1 开始。


由于 SELECT 是一个原子操作,我认为没有一个简单的解决方案。我还看到需要解决两个不同的问题:

选择单行而不重复显示的行。基本上你需要将显示的最后一行存储在某处。如果您有某个存储当前状态的应用程序,则可以选择将其保存为外部变量。草图解决方案是在 MySQL 5.0+ 中完成的:

首先准备一条稍后执行的语句并设置查询的初始位置:

PREPARE STMT FROM 'SELECT id, name FROM customer LIMIT ?, 1';
SET @pos = 0;

您可能需要添加默认排序以获得可靠的结果。 每次你想要获取一行时,执行语句

EXECUTE STMT USING @pos; 
SELECT count(*) FROM customer INTO @max; 
SET @pos=(@pos+1)%@max;

另一件事是,您想读取随机位置。我现在看到的唯一解决方案是创建一个临时表,该表要么保存客户随机订购的内容,要么创建一个临时表保存 0..@max 中的所有数字并读取主表中的当前位置从临时表中。如果您有 MySQL 之外的应用程序,可能有更优雅的方法来解决这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何一条一条选择记录而不重复 的相关文章

  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • 如何使用 PHP 从 MySQL 检索特定值?

    好吧 我已经厌倦了 过去一周我花了大部分空闲时间试图解决这个问题 我知道 SQL 中的查询已更改 但我无法弄清楚 我能找到的所有其他帖子似乎都已经过时了 如果有人能帮助我 我将非常感激 我想做的就是使用手动输入数据库的唯一 密码 来检索行的
  • 高效插入和更新时检查唯一性

    我的员工表中有 2 列 每列值必须是唯一的 staff code staff name staff id staff code staff name 1 MGT Management 2 IT IT staff 当向表中插入或更新项目时 我
  • 如何解决 MySQL innodb 在 TRUNCATE TABLE 上“等待表元数据锁”?

    在 GitLab CI 服务器中运行包含数百个应用程序单元测试的测试套件 运行 10 次测试后 不知怎的 它总是卡在等待 TRUNCATE TABLE 上的表元数据锁上 这是一个拆卸步骤 我知道SHOW ENGINE INNODB STAT
  • 通过将行旋转为动态数量的列来在 MySQL 中创建摘要视图

    我在 MySQL 中有一个表 其中包含以下字段 id company name year state 同一客户和年份有多行 以下是数据示例 id company name year state 1 companyA 2008 1 2 com
  • SQLSTATE[HY000] [2002] 资源暂时不可用 - mysql - innodb 和 pdo

    在我的错误日志中得到大量结果 如下所列 数据库中的所有表都是 innodb 并且就与这些表的任何交互而言 一切都是带有准备好的语句的 pdo 正如我所说 所有错误几乎与下面列出的错误相同 但发生在几个不同的页面上 无论页面如何 错误行始终指
  • “警告:mysql_query():提供的参数不是有效的 MySQL-Link” - 为什么?

    我的代码有什么问题吗 我不断收到此错误 Warning mysql query supplied argument is not a valid MySQL Link resource in functions php on line 4
  • 如何将图数据结构持久化到关系数据库中?

    我考虑过创建一个顶点表和一个边表 但是在内存中构建图和遍历子图是否需要大量查找 我想避免过多的数据库读取 还有其他方法可以保存图表吗 旁注 我听说过 Neo4j 但我的问题实际上是如何在概念上表示标准数据库中的图形 不过 我对一些 NoSQ
  • MySQL 中的 UDF 性能

    我注意到 当查询在 SELECT 或 WHERE 子句中调用 UDF 时 MySQL 查询执行时间的性能会呈指数级下降 有问题的 UDF 查询本地表以返回标量值 因此它们不仅执行算术表达式 而且充当相关子查询 我通过简单地删除 UDF 并使
  • ORDER BY 之后的 GROUP BY

    我需要去做GROUP BY after ORDER BY 我不明白为什么 MySQL 不支持这一点 这是我的代码 SELECT pages id contents id language ORDER BY FIND IN SET langu
  • MYSql 前 10 名及其他总计

    我的查询运行良好 但我只需要前 10 个供应商 然后我需要将所有剩余的总计放在 所有其他 行中 如果没有单独的查询 我该如何做到这一点LIMIT 10 18446744073709551615 SELECT VENDOR fullname
  • 将此 MySQL 查询转换为 PyGreSQL

    我正在开发一个 Ruby 应用程序 它使用 mysql 函数 XOR 和 BIT COUNT 不过 我现在需要在运行 PyGreSQL 的 Heroku 上运行该应用程序 我找不到任何可以帮助我的 PyGreSQL 文档 那么任何人都可以翻
  • 内存高效的大型数据集流式传输到 S3

    我正在尝试使用 SQL alchemy 复制 S3 大型数据集 大于 RAM 我的限制是 我需要使用 sqlalchemy 我需要将内存压力保持在最低水平 我不想使用本地 filsystem 作为中间步骤将数据发送到 s3 我只想通过管道将
  • Android 预填充数据库 [重复]

    这个问题在这里已经有答案了 我正在开发一个 Android 应用程序 需要在该应用程序的数据库中填充多个条目 一个表 包含 1000 10000 行 然后用户才能使用该应用程序 我浏览了一些教程 但不确定执行此操作的最佳方法 我是否应该在每
  • 在 Yii2 中从数据库中多态查找模型

    我在数据库 mysql 中有一张表 但该表存储了几种略有不同类型的行 类型取决于此表的type柱子 我有一个表的抽象 ActiveRecord 类和几个后代子类 它们为不同类型的同一表的行实现略有不同的逻辑 现在我正在为所有类型的行实现更新
  • Mysql 在给定日期时间范围内插入随机日期时间

    使用 SQL 我可以在给出范围的列中插入随机日期时间值吗 例如 给定一个范围2010 04 30 14 53 27 to 2012 04 30 14 53 27 我对范围部分感到困惑 因为我刚刚做了这个 INSERT INTO someta
  • Laravel 使用数据库自​​动完成文本字段

    我正在尝试制作如下所示的自动完成表单 但该表单没有显示建议 因为我的数据库查询没问题 形成科尔 控制器方法代码 Routes 当我搜索链接时 我得到如下查询结果 显示结果 id 1 value 苏拉夫霍森 id 2 value 苏拉夫霍森
  • Python MySQL 模块

    我正在开发一个需要与 MySQL 数据库交互的 Web 应用程序 但我似乎找不到任何真正适合 Python 的模块 我特别寻找快速模块 能够处理数十万个连接 和查询 所有这些都在短时间内完成 而不会对速度产生重大影响 我想我的答案将是游戏领
  • 如何删除实体框架6中的多对多关系

    如果将项目连接为多对多关系 则从数据库中删除项目时会出现问题 我的数据库看起来像 Project lt JobInProject gt Job ProjectID JobInProjectID JobID ProjectID JobID 主
  • 如何限制mySQL中的搜索和替换字符串

    我用它来搜索和替换 mySQL 中的字符串 UPDATE products SET prodname REPLACE prodname S S 这些产品包含诸如 TYLENOL TABS 100 S 之类的字符串 我想将其转换为 TYLEN

随机推荐

  • 在 Python 3.x 中,为什么磁盘上没有 itertools 共享对象?

    Is the itertools C 模块以某种方式包含在 3 x 的主要 Python 二进制文件中 假设 C 模块已构建并包含在内 如下所示 gt gt gt import inspect gt gt gt import itertoo
  • WiX 刻录升级最后显示卸载 UI

    我正在尝试为 WiX 和 Burn 创建自定义 UI 除了一件事之外 我几乎完成了 在正在升级 例如 1 0 0 到 1 1 0 的安装结束时 将开始卸载以前的版本并显示它的 UI 我的问题是我应该如何处理这个问题 以便用户最终看不到卸载用
  • ggplot2 中可以使用“大小点样式”的热图吗?

    是否可以在 ggplot2 中用圆形而不是方形绘制热图 如果不仅通过颜色渐变来表示值 而且还通过圆圈大小来表示值 那就太好了 我正在考虑这样的图表点热图其中圆的大小也按其特定值交替 我已经阅读了 ggplot2 的热图 但找不到解决方案 对
  • 通过删除最小数量的元素,将给定的整数数组转换为排序数组

    我正在解决以下问题 我必须通过删除最小数量的元素将给定的整数数组转换为排序数组 例如 3 5 2 10 11 将通过删除 2 进行排序 3 5 10 11 或者 3 6 2 4 5 7 7 将通过删除 3 6 进行排序 2 4 5 7 7
  • 在自己的线程中将数据写入 TcpSocket

    我的线程 TCP 服务器出现问题 我可以打开我的服务器 创建一个新的套接字 我可以通过套接字接收数据 我使用了readyRead 信号 然后使用readLine 来读取 这工作正常 现在我想将数据写入这个套接字从另一个线程 所以我创建了一个
  • eclipse 构建所有项目,甚至在为单个项目发布构建时也是如此

    Eclipse 版本 3 7 似乎存在一些问题 当我编译一些单个项目 通过 ant 或 buildProject 时 Eclipse 开始构建工作区中的所有项目 这需要很长时间 我尝试过以两种方式构建项目 右键单击ant文件 选择运行为并构
  • 用动画翻页(UIWebView)

    我有一个网络视图 它显示电子书的页面 我想用卷页动画从一页切换到下一页 现在 我知道如何切换页面以及如何在 webview 上应用卷页动画 但是如何以看起来像从一页翻转到另一页的方式应用卷曲动画呢 这是一些可下载代码并举例说明如何执行此操作
  • HTTP POST Google Cloud Functions NodeJS

    如何编写将接收 HTTP 请求然后将 HTTP POST 请求发送到不同端点的 Google Cloud Function 例如 我可以将 HTTP 触发器发送到我的云函数 https us central1 plugin check xx
  • 在 WPF 选项卡控件中将选项卡项文本设置为粗体

    当我将选项卡项目字体粗细设置为粗体时 该选项卡中的所有控件都会变为粗体 如何仅设置选项卡项的文本标题而不影响控件 这就是我为了让它发挥作用所做的 谢谢 SeeSharp 的提示
  • 与 iPhone DropBox API 的简单同步

    我对 DropBox API 感到有点沮丧 它应该是简单明了的 但我还没有找到关于如何进行简单同步的简单明了的解释 我遵循了 DropBox API 附带的自述文件中可以找到的所有说明 为了测试整个过程 我创建了两个按钮来从我的 DropB
  • ECMAScript 6 负二进制文字

    通过 EMCAScript6 我发现有一种方法可以表示二进制文字使用0b or 0B字首 我正在尝试它 但找不到表示负数的方法 因为它没有使用补码 我错过了什么吗 我找不到实际规范中解释二进制文字的位置 我想我可以通过类似的操作自己实现它
  • 仅在应用程序发布到 Google Play 后,Firebase 数据库才会出现错误 - android

    我正在制作一个使用 firebase 数据库的应用程序 我的应用程序运行时没有崩溃 直到我将其作为测试版发布到 Google Play 上 当我发布该应用程序时 它不断崩溃并在一行上返回 com google firebase databa
  • 24 小时后过期的 SQL 条目

    我想制作一个表 其中的条目在插入 PHP 和 MySQL 后 24 小时后过期 理想情况下 我希望每次用户与我的服务器交互时运行 删除过程 以删除旧条目 由于这种情况更为频繁 因此您应该不会有大量数据需要删除 因此它应该只需要几毫秒 我为每
  • 如何使用实体框架从 SQL Server 实例获取数据库名称列表?

    我想使用实体框架 EF 查询 SQL Server 实例并返回该实例上的数据库名称列表 我可以使用以下代码来做到这一点 但想知道是否有 EF 的方法 public static string GetDatabaseNames SqlConn
  • linq toEntity 无法识别方法

    我有这些方法 public int count Guid companyId Expression
  • 空手道 API 测试中不存在 iRequired 请求部分“文件”

    当我尝试使用以下功能时 我收到必需的请求部分 文件 不存在 功能 验证 API 是否正确返回产品 Background url http localhost 8080 Scenario Products are returned on po
  • 使用元标记和 PHP 重定向页面

    在这里 在 PHP 代码中 我面临着在有效登录后重定向页面的问题 示例代码 result mysql query sql count mysql num rows result if count 1 echo else gt gt
  • 如何在没有 ResultSet 的情况下获得 ResultSetMetaData 的等效项

    我需要将一堆列名解析为列索引 以便使用一些不错的ResultSetMetaData方法 然而 我知道如何获得的唯一方法ResultSetMetaData对象是通过调用getMetaData 一些ResultSet 我遇到的问题是 获取 Re
  • Spring 批量暂停/恢复与停止/重新启动

    我是 Spring Batch 的新手 有一些关于暂停 恢复的问题 阅读 spring Batch 文档后 似乎没有任何内置的暂停或恢复功能 但是 我从主站点找到了这个用例 http docs spring io spring batch
  • 如何一条一条选择记录而不重复

    select id name from customer order by random limit 5 上述查询选择随机记录 但是它会重复行 我只想每次选择一行而不重复 假设我的 id 为 1 到 5 第一次我想选择 1 第二次查询显示