2012-05-03 24 views
0

本当にここで困惑していますので、アドバイスをお願いします。 MAX()はMySQLで予期しない結果を表示していません

I clientsの表に、私は ID = 257とクライアントのために以下のレコードがあります。私は refフィールドに簡単なMAX()を追加した場合、私が得る、今

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

を:

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

誰が説明することができますこれはどうですか?そして、私は望む結果を得るために何をすべきですか?

EDIT:@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 
+0

max_1をdata_1に適用し、目的の結果が得られるかどうかを確認してください – Satya

+3

2番目のクエリが正しく表示されていますか?最初のものと同じに見える – paulslater19

+1

あなたのsintaxが間違っています。凝集した属性を選択することはできません。一緒に – andreapier

答えて

2

は、このヘルプのでしょうか?

SELECT ref, ID, client_name, data_1 FROM clients WHERE ID = 257 and ref in 
    (select max(ref) from clients WHERE ID = 257) 
+0

ありがとう、これは動作します。 – user114671

+1

MAX()は単一の値しか返さないので、安全に 'in'を' = 'にすることができます: –

+0

ありがとう、私は後で試します – neohope

3

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

MAX()その列の最大値を示すであろう。 Mysqlは残りのデータを最初の行から取り出していました。

むしろ、このクエリはあなたが最高ref

+0

ありがとう、これは動作します。 – user114671

0

行のデータを取得しているあなたが持っ句を試してみましたでしょうか?これはうまくいくはずです:実際にはグループ化したくない場合は、集計結果に基づいて選択するのが最良の方法です。

+0

ありがとうございますが、これは '1123'の' ref'と '0'の' data_1'を返します。よくわかりません! – user114671

+0

あなたの質問に 'SHOW CREATE TABLE clients'の出力を追加できますか? – Ilion

+0

質問の出力に追加しました – user114671

関連する問題