0

ここで本当に困惑しているので、アドバイスをいただければ幸いです。

表には、 = 257clientsのクライアントに関する次のレコードがあります。ID

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

having句を試しましたか?これはうまくいくはずです:

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

実際にグループ化する必要がない場合は、集計結果に基づいて選択するのが最善の方法です。

于 2012-05-03T15:28:41.160 に答える