【问题标题】:Select user id with a minimum value SQL [duplicate]选择具有最小值 SQL 的用户 ID [重复]
【发布时间】:2015-11-03 01:48:10
【问题描述】:

如何从数据库表中选择链接到表最小值的用户 ID

例如

User ID    Pending
-------    --------
0          5
1          4
2          7

'$resultSet = $mysqli->query("SELECT MIN(write_pending) FROM writerdata_tb");
            if ($temp = $resultSet->fetch_assoc()) {

            }'

在这种情况下,我希望返回的数据具有待处理最少的用户的值,在这种情况下是用户 1。如何设置 MySqli 查询来处理这个问题?将结果保存为变量以供我的 php 其余部分使用的最佳方法是什么?

【问题讨论】:

  • HTML 和 PHP 代码在哪里?
  • '$resultSet = $mysqli->query("SELECT MIN(write_pending) FROM writerdata_tb"); if ($temp = $resultSet->fetch_assoc()) { }' 这就是我目前所拥有的,我想进行查询并将用户 ID 存储为变量
  • 这个问题很常见,它有自己的标签 [greatest-n-per-group]。
  • select user id from table ORDER by pending DESC limit 1

标签: php mysql database mysqli


【解决方案1】:

可能是这样的,但这在很大程度上取决于您的表结构是什么样的。我假设您有一个通用的 users 表,其中包含一些 ID 和您提到的这个待定值。

SELECT userID FROM users WHERE pending = ( SELECT MIN(pending) FROM users );

嵌套的 Select 语句在表的该列中获取最小的挂起值,然后您可以通过将挂起强制为从该嵌套 select 调用返回的值来优化您的 select userID 语句。

更新

为了澄清您处理结果的后续问题,这里是您提供的代码的修改:

$resultSet = $mysqli->query("SELECT userID FROM users WHERE pending = ( SELECT MIN(pending) FROM users )");

if($resultSet->num_rows > 0) {
    //We use a while loop here, in the event that there are multiple rows
    while($row = $resultSet->fetch_assoc()) {
        echo $row["userID"]; //Accessing the rows index at "userID"
    }
}

【讨论】:

  • 因此查询首先在待处理中查找最小值,然后将其用作指向用户 ID 的指针。我现在正在实施,谢谢
  • 是的,子查询返回所有未决值中的最小值,您可以搜索与该值关联的用户 ID。如果这为您解决了问题,请接受答案。谢谢!
  • 是的,我会,而且,我如何捕获结果并将其存储为变量?我一直在使用 $resultset 方法,但我确信有更有效的方法来做到这一点
  • $resultset 只是一个变量名,而不是一个方法。要处理表查询的结果,您将它们存储在一个变量中(就像您拥有的一样),然后处理该结果集中的每一行。您的示例在结果中只有一行,因为您有待处理的唯一值(我不知道这是否总是如此),但请查看我上面答案的更新以查看示例。
  • 是的,这就是我想知道的。趁我还在的时候,你知道你是否可以在 cookie 上使用 mysql 真正的转义字符串吗?
猜你喜欢
  • 1970-01-01
  • 2012-09-01
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
相关资源
最近更新 更多