MySQL MIN() 函数只返回一条记录

标签 mysql sql select min

我有一个数据集:

+----+---------------+-------+-------------+---------------------+
| id | ip            | port  | point_count | create_time         |
+----+---------------+-------+-------------+---------------------+
|  1 | 192.168.20.28 | 10000 |           0 | 2013-03-29 14:29:14 |
|  2 | 0.0.0.0       | 10000 |           0 | 2013-03-29 14:29:32 |
|  3 | 0.0.0.1       | 11111 |           2 | 2013-03-29 14:29:38 |
|  4 | 0.0.0.5       | 11112 |           3 | 2013-03-29 14:29:44 |
+----+---------------+-------+-------------+---------------------+
4 rows in set (0.00 sec)

现在,我使用 mysql 的 MIN() 函数按照以下方式获取记录:

mysql> SELECT s.id, s.ip, s.port, MIN(s.point_count) FROM origin_server s;
+----+---------------+-------+--------------------+
| id | ip            | port  | MIN(s.point_count) |
+----+---------------+-------+--------------------+
|  1 | 192.168.20.28 | 10000 |                  0 |
+----+---------------+-------+--------------------+
1 row in set (0.00 sec)

显然,有两行的 point_count 列具有相同的值,但它只返回了一条记录。我只是想确认这种情况是否正确。提前致谢:)

最佳答案

您只获得一条记录的原因是因为 MIN() 是一个聚合函数,它为每个组返回一条记录。由于您没有指定 GROUP BY 子句,结果是正常的,只给您一条记录。

您可以使用子查询获取point_count 的最小值并将其等同于外部查询的point_count

SELECT  *
FROM    origin_server 
WHERE   point_count = (SELECT MIN(point_count) FROM origin_server)

输出

╔════╦═══════════════╦═══════╦═════════════╦═════════════════════╗
║ ID ║      IP       ║ PORT  ║ POINT_COUNT ║     CREATE_TIME     ║
╠════╬═══════════════╬═══════╬═════════════╬═════════════════════╣
║  1 ║ 192.168.20.28 ║ 10000 ║           0 ║ 2013-03-29 14:29:14 ║
║  2 ║ 0.0.0.0       ║ 10000 ║           0 ║ 2013-03-29 14:29:32 ║
╚════╩═══════════════╩═══════╩═════════════╩═════════════════════╝

关于MySQL MIN() 函数只返回一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15737006/

相关文章:

php - 在 PHP 中插入语句失败

MySQL WITH ROLLUP 返回不正确(或意外)的结果

PHP 里面的 javascript 函数?

sql - TSQL - 如何格式化查询结果?

php - 出于某种原因,值(value)双重 echo

SQL 约束首字母大写

sql - 删除真费时!数据库

sql - Postgresql如何从文本数据中获取指定的文本

mysql - SELECT DISTINCT 和 CONCAT 未正确返回值

mysql - 重复选择同一组 ID