2010-11-26 10 views
2

は、私はこのような何かをしたい:MySQLのクエリ、数値の違いによる順序?

SELECT * FROM `sometable` 
    WHERE `smth`=`smth` 
    ORDER BY (`r1`-`r2`) 

が、R2> R1、差が負ではない、それは非常に大きな価値を持っている...とき、どのように引いた後、負の値を取得するには?

答えて

5

はよく、私はあなたがR1とR2で符号なしの値を持っていることをsupose ...負の値は、これを実行してみてください取得する:それは否定することはできません、あなたが希望の場合

SET sql_mode='NO_UNSIGNED_SUBTRACTION'; 
+2

完璧!できます!どうもありがとうございました! –

+0

上記の文をクエリ・ボックスで実行すると、 'sql_mode'が永続的に' NO_UNSIGNED_SUBSTRACTION'に設定されるか、または1つの問合せに対してのみ有効になりますか? –

+0

このクエリを実行する場合、パラメータは現在の接続に対してのみ有効になります;] – mishunika

0

は、おそらく未署名のフィールドです最初にフィールドを通常のintにキャストする必要があります。

+0

yeap ..良いアイデア...しかしこれはhttp://stackoverflow.com/questions/4286767/mysql-query-order-by -numeric-difference/4286776#4286776ははるかに単純です... –

+0

はい、それはきれいだった、1つは常に新しいものを学ぶ:) –

関連する問題