Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择具有最小时间值的字段信息_Php_Mysql - Fatal编程技术网

Php 选择具有最小时间值的字段信息

Php 选择具有最小时间值的字段信息,php,mysql,Php,Mysql,我以为我做的是对的,但我总是得到错误的结果。我试图简单地用min time查找条目的id,但我没有得到该条目 $qryuserscount1="SELECT id,min(entry_time) FROM scrusersonline WHERE topic_id='$topic_id'"; $userscount1=mysql_query($qryuserscount1); while ($row2 = mysql_fetch_assoc($userscount1)) {

我以为我做的是对的,但我总是得到错误的结果。我试图简单地用min time查找条目的id,但我没有得到该条目

$qryuserscount1="SELECT id,min(entry_time) FROM scrusersonline WHERE topic_id='$topic_id'";
$userscount1=mysql_query($qryuserscount1);
while ($row2 = mysql_fetch_assoc($userscount1)) {
    echo $onlineuser= $row2['id'];
}
这是我的问题,它不起作用。然而,这确实起作用,对我来说毫无意义
从ScruseSonline中选择id,其中topic\u id='$topic\u id'按条目顺序\u时限1,有人能快速指出我做错了什么吗?

我认为min函数必须与group by子句一起使用。但是,您发布的第二个请求选择了完整的id列表,其中topic_id是您想要的,按输入时间排序(您可以添加一个ASC或DESC,使其最清晰),然后只返回第一个

有什么问题吗?:-)

根据
SQL
标准,此查询无效

您不能在
SELECT
列表中使用
id
,除非您
groupby
it,因为不清楚应该从组中返回哪个
id

然而,
MySQL
允许此类查询从组中返回任何随机的
id
(如果没有
groupby
子句,则从整个记录集中返回)

此行为旨在简化
主键
分组依据
的联接:

SELECT  mytable.*, COUNT(*)
FROM    mytable
JOIN    othertable
ON      othertable.col1 = mytable.id
GROUP BY
        mytable.id
在这种情况下,
mytable
中的所有记录保证在组内是相同的,返回哪一条记录并不重要

您的查询不会返回包含最小值
entry\u time
的记录。相反,它将返回
entry\u time
的最小值和一个满足
topic\u id=$topic\u id
条件的随机
id
,该条件不能保证属于同一条记录

SELECT id,min(entry_time) FROM scrusersonline WHERE topic_id='$topic_id'
对于与
主题id
匹配的每一行,将返回
id
entry\u time
,因为没有可从中选择
min(entry\u time)
的group by子句。
SELECT
子句只定义要返回的列,它不限制任何行的选择,这就是
WHERE
子句的作用

SELECT id FROM scrusersonline WHERE topic_id='$topic_id' ORDER BY entry_time LIMIT 1
当按
输入时间
(最小值)排序时,将仅为匹配
主题id
其中主题id=“$topic\u id”
)的第一个(
限制1
)返回
id


因此,是的,
从scrusersonline中选择id,其中topic_id='$topic_id'按条目排序\u时限1
是您要查找的内容。

非常感谢您提供的信息性回复。我想我展示的第二种方式是我唯一的选择,对吗?@scarface:是的。如果你在
(topic\u id,entry\u time)
上创建一个复合索引,它会变得更快。我只是想如果我能正确地做的话,min可能是一个更有效的方法,但显然这个意图是无效的。谢谢pinkgothic,感谢你的时间
SELECT id FROM scrusersonline WHERE topic_id='$topic_id' ORDER BY entry_time LIMIT 1