0

在这里真的很难过,所以任何建议将不胜感激。

我在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    |
+------+-----+-------------+--------+

任何人都可以解释一下吗?我应该怎么做才能得到想要的结果?

编辑:

SHOW CREATE TABLE clients根据@Ilion的要求添加了输出:

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
4

3 回答 3

3

SELECT ref, ID, client_name, data_1 FROM clients WHERE ID = 257 ORDER BY ref DESC LIMIT 1

MAX()将显示该列的最大值。然后,Mysql 从第一行中提取其余数据。

相反,此查询将确保您获得最高的行数据ref

于 2012-05-03T15:25:39.357 回答
2

这有帮助吗?

SELECT ref, ID, client_name, data_1 FROM clients WHERE ID = 257 and ref in
    (select max(ref) from clients WHERE ID = 257)
于 2012-05-03T15:25:11.807 回答
0

你试过有条款吗?这应该有效:

SELECT ref, ID, client_name, data_1 FROM clients WHERE ID = 257 having max(ref);

当您实际上不想要分组时,这是基于聚合结果进行选择的最佳方式。

于 2012-05-03T15:28:41.160 回答