真的在这里被难住了,所以任何建议都将不胜感激。
我在 clients
表中,对于 ID
= 257 的客户端,我有以下记录:
SELECT ref, ID, client_name, data_1 FROM clients WHERE ID = 257
+------+-----+-------------+--------+
| ref | ID | client_name | data_1 |
+------+-----+-------------+--------+
| 1123 | 257 | Client257 | 0 |
| 1124 | 257 | Client257 | 163 |
+------+-----+-------------+--------+
现在,如果我将一个简单的 MAX() 添加到 ref
字段,我会得到:
SELECT MAX(ref), ID, client_name, data_1 FROM clients WHERE ID = 257
+------+-----+-------------+--------+
| ref | ID | client_name | data_1 |
+------+-----+-------------+--------+
| 1124 | 257 | Client257 | 0 |
+------+-----+-------------+--------+
我应该得到:
+------+-----+-------------+--------+
| ref | ID | client_name | data_1 |
+------+-----+-------------+--------+
| 1124 | 257 | Client257 | 163 |
+------+-----+-------------+--------+
有人能解释一下吗?我应该怎么做才能获得预期的结果?
编辑:
根据@Ilion 的要求添加了SHOW CREATE TABLE clients
的输出:
CREATE TABLE `clients` (
`ref` int(11) unsigned NOT NULL AUTO_INCREMENT,
`ID` int(11) unsigned NOT NULL,
`client_name` varchar(75) DEFAULT NULL,
`data_1` int(11) unsigned NOT NULL DEFAULT '0',
`last_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY `ref` (`ref`)
) ENGINE=MyISAM AUTO_INCREMENT=1135 DEFAULT CHARSET=utf8
最佳答案
SELECT ref, ID, client_name, data_1 FROM clients WHERE ID = 257 ORDER BY ref DESC LIMIT 1
MAX()
将显示该列 的最大值。 Mysql 然后从第一行中挑选其余的数据。
相反,此查询将确保您获得具有最高 ref
关于mysql - MAX() 未在 MySQL 中显示预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10434404/