3

OK、私の mysql サーバーの 1 つから奇妙なクエリ動作が見られます。すべて同じデータを使用して、次の 2 つのクエリを 3 つの異なるサーバーで実行しました。

SELECT t1.Field1, t1.Field2, t1.Field3, 
(SELECT t2.Field1
  FROM thetable AS t2
  WHERE Field2=t1.Field2 AND Field3=t1.Field3 AND t2.Field1>t1.Field1
  ORDER BY Field1
  LIMIT 1) AS MinimumResult
FROM thetable AS t1
WHERE t1.UserID=5;

SELECT t1.Field1, t1.Field2, t1.Field3, 
(SELECT min(t2.Field1)
  FROM thetable AS t2
  WHERE Field2=t1.Field2 AND Field3=t1.Field3 AND t2.Field1>t1.Field1) AS MinimumResult
FROM thetable AS t1
WHERE t1.UserID=5;

3 つのサーバーのうちの 2 つで、両方のクエリが同じ結果を返します。3 つ目では、MinimumResult フィールドに対して 2 つの異なる結果が得られます。最初のクエリは、小さい数値を返します。2 番目のクエリは、私が期待するものと、両方のクエリが他のサーバーで返すものを返します。

私はこれにどのように対応すればよいかわかりませんか?これはサーバー構成の問題ですか、それとも予想される動作ですか?

ご協力いただきありがとうございます。

4

1 に答える 1

0

フィールドのデータ型は float ですか? float の比較で奇妙なことが起こる可能性があります。

于 2012-12-18T20:46:11.703 に答える