【问题标题】:Does MySQL "SELECT LIMIT 1" with multiple records select first record from the top?具有多条记录的MySQL“SELECT LIMIT 1”是否从顶部选择第一条记录?
【发布时间】:2013-07-05 05:32:42
【问题描述】:

我找了又找,找不到这个问题的答案,我可能问错了。

我正在查询员工数据库。

我需要根据职位 ID 获取详细信息,但该职位 ID 可能有多个记录,因为该组织有长期雇员和临时雇员反对同一职位。

因此,为了获取位置 id 的当前占用者,我需要我的查询从 TOP DOWN 中选择与位置字符串匹配的第一条记录。

这会从顶部选择第一个匹配的记录吗?

SELECT * WHERE `position_id`="00000000" LIMIT 1;

提前致谢。

【问题讨论】:

  • 它选择第一条记录。如果您没有在查询中指定顺序 ... ::shrug::

标签: mysql select limit


【解决方案1】:

您需要一个ORDER BY 子句来定义表中各个记录之间的顺序。如果不使用ORDER BY,则可以假设记录之间没有固定的顺序,每次执行查询时都可以获得新的顺序。

【讨论】:

  • 谢谢,我会用“ORDER BY id”来攻击它,因为我首先在 Excel 中对记录进行排序。
  • 请记住,执行 ORDER BY id LIMIT 1 将首先对整个结果集进行排序,然后为您提供第一行。
【解决方案2】:

来自手册:

使用一个参数,该值指定从结果集开头返回的行数

因此,使用LIMIT 1,您将获得结果集中的第一行。结果集取决于使用的引擎和您拥有的索引。如果要添加第一行,则需要创建另一列来定义它。

【讨论】:

    【解决方案3】:

    它只是随机获得一个*。除非您添加 ORDER BY 子句,否则无法判断它是哪一个。

    * 当然不是随机的。这取决于记录的存储方式,重复查询可能每次都返回相同的结果,至少只要您不修改表或其内容。我的意思是,你不能确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 2022-01-24
      • 2016-03-06
      • 1970-01-01
      相关资源
      最近更新 更多