2016-10-04 6 views
0

varcharの長さがmysql dbの結果に影響するという奇妙な問題が発生しました。ソート結果は、varcharカラムの長さの影響を受けます。mysql

SQL:

SELECT oid, 
CODE, 
VALUE, 
COMMENT, 
obser_date, 
condition_code, 
date_asserted, 
location_code, 
patient_oid, 
performer 
FROM t_clinical_observation 
WHERE patient_oid= 1 AND CODE='1101' ORDER BY obser_date DESC 

OIDは、自動車の増加とコメントがvarchar型です。

コメントのlenghが結果は、512の場合: enter image description here

コメントのlenghが128で、結果がある場合: enter image description here

私はOID 109のレコードは、常にで維持したいです最初。しかし、コメント列の長さが512の場合、2行目のままです。コメント列の長さが128の場合、最初の行にとどまります。

ありがとうございました。

+0

obser_dateは型である '一意に行を識別するフィールドのセットでのご注文すべきですvarchar' ??? – 1000111

+0

質問は何ですか?あなたは何をする必要がありますか? – Aschab

+0

obser_dateは日付、列 'comment'はvarcharです。コメントの長さが結果に影響します。 – Carl

答えて

1

問題はありません。日付フィールドをソートしていて、2つのレコードの日付がまったく同じであるため、必要な順序で表示できます。

同じクエリを2回呼び出すと、異なる順序でデータベースを返すこともできます。実際にフィールドのサイズと2つの行の順序の間に相関がある場合は、データベースがフィールドのサイズに応じて異なる順序でデータを移動する2つの異なる実行計画を使用している可能性があります。あなたは結果セットに決定論的順序を持つようにしたい場合は

しかし、あなたは(あなたのケースで、それはobser_dateおよびOIDかもしれません)

関連する問題