2016-05-18 1 views
2

上で動作します:ORDERが、私はこのクエリを持っているサーバー上ではなく、他の

ORDER:

SELECT count(DISTINCT trim(level1)) cnn 
FROM table1 
WHERE f1 != -1 
ORDER BY trim(level1);` 

それは完全に1つのデータベース上で、それが与える別の代表的なもので実行されます私はを削除すると句

BYグループがない場合 なしGROUP列とGROUP列(MIN()、MAX()、COUNT()、...)のトリム混合することにより、違法です3210うまく動作します。

誰でも理由を説明できますか?私はMySQLを使用しています。

答えて

1

MySQLでは、SELECTリスト、HAVING条件、またはORDER BYリストが非集約カラムを参照する非標準SQLクエリを実行できます。

あなたは非集約列で注文するクエリで

:あなたはcount(DISTINCT trim(level1)) BYだけ注文することができ、標準SQLには、ノーグループを持っていないので

SELECT count(DISTINCT trim(level1)) cnn 
FROM table1 
WHERE f1 != -1 
ORDER BY trim(level1) 

、しかし、あなたは(集約されていないtrim(level1)によって発注されていますとにかくそれの目的は何ですか?)。

1つのサーバー上で動作し、他のサーバーが動作しない理由は、1つのサーバーでONLY_FULL_GROUP_BYが無効になっているため(クエリが実行される)、もう1つが有効になっているためです。

標準SQL92、標準SQL99、およびMySqlの処理方法の詳細は、このマニュアルページを参照してください。MySQL Handling of GROUP BY

関連する問題