SQL 查询在两个不同的 Mysql AWS 服务器上的工作方式不同
SQL Query not working the same way in two different Mysql AWS Servers
我们有两个 mysql sql RDS 服务器,我们面临一个我无法解决的问题。我们使用的查询是从数据集中简单选择最大日期行。这在第一台服务器上工作正常,而在另一台服务器上即使在同一数据集上也无法正常工作。
我们正在使用的查询如下:
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
感谢任何帮助。
这不是获取每个名称的最大日期的正确方法,没有理由期望从中得到一致的结果。正确的方法是:
select name, MAX(last_update_date) as last_update_date
FROM table1
GROUP BY name
它似乎在一台服务器上运行的事实只是巧合,它可能不会持久。
如果要获取包含最大日期的整行,请参见SQL Select only rows with Max Value on a Column
我们有两个 mysql sql RDS 服务器,我们面临一个我无法解决的问题。我们使用的查询是从数据集中简单选择最大日期行。这在第一台服务器上工作正常,而在另一台服务器上即使在同一数据集上也无法正常工作。
我们正在使用的查询如下:
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
感谢任何帮助。
这不是获取每个名称的最大日期的正确方法,没有理由期望从中得到一致的结果。正确的方法是:
select name, MAX(last_update_date) as last_update_date
FROM table1
GROUP BY name
它似乎在一台服务器上运行的事实只是巧合,它可能不会持久。
如果要获取包含最大日期的整行,请参见SQL Select only rows with Max Value on a Column