2016-12-22 3 views
0

私たちは2つのmysql sql RDSサーバを持っており、解決できない問題に直面しています。私たちが使用しているクエリは、データセットからの最大日付行の単純な選択です。これは、同じデータセットであっても、他のサーバーで正しく動作しないため、最初のサーバーで正常に動作しています。2つの異なるMysql AWSサーバで同じ方法でSQLクエリが動作しない

我々が使用しているクエリは以下の通りです:

SELECT `name`,last_update_date FROM 
(SELECT * FROM `table1` ORDER BY last_update_date DESC) X GROUP BY `name`; 

なぜこれが起こっている、私はわかりません。私は両方のサーバーでグローバル変数をチェックして、新しいサーバーに存在していない以下の変数が見つかりました:すべてのヘルプは高く評価され

binlogging_impossible_mode 
innodb_additional_mem_pool_size 
innodb_mirrored_log_groups 
innodb_use_sys_malloc 
simplified_binlog_gtid_recovery 
sql_log_bin 
storage_engine 
thread_concurrency 
timed_mutexes 

を。

+0

を参照してください。 – Uueerdo

+0

あなたは、GROUP BYへの悪名高いMySQL非標準拡張を悪用しています。 https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.htmlその拡張機能*はあなたに予期しない結果を与えるために*好きです。 –

+0

変数を比較する代わりに、両方のサーバーでEXPLAINによって生成された実行計画を比較することをお勧めします。 http://dev.mysql.com/doc/refman/5.7/en/explain.html –

答えて

4

これは、各名前の最大日付を取得する正しい方法ではなく、一貫した結果を期待する理由はありません。正しい方法は次のとおりです。

select name, MAX(last_update_date) as last_update_date 
FROM table1 
GROUP BY name 

それは1台のサーバー上で動作しているようだという事実は、単なる偶然であり、それは続かない可能性があります。

あなたが最大の日付を含む行全体を取得したい場合、あなたはそのクエリが不overcomplicatedようだとして「正しく動作」を定義する必要がありSQL Select only rows with Max Value on a Column

関連する問題