SQL 查询在最新版本的 MySQL 中不起作用

Posted

技术标签:

【中文标题】SQL 查询在最新版本的 MySQL 中不起作用【英文标题】:SQL query not working in latest version of MySQL 【发布时间】:2021-07-07 08:35:40 【问题描述】:

我想通过以下查询获取特定行:

$wanted_term = $wpdb->get_row("
      SELECT allterms.* FROM (
      SELECT @rownum := @rownum + 1 AS rownum, terms.* FROM (
      SELECT DISTINCT t.*, tt.taxonomy, tt.term_taxonomy_id, tm.meta_key, tm.meta_value, tr.object_id
      FROM wp_terms AS t
      INNER JOIN wp_termmeta AS tm ON ( t.term_id = tm.term_id )
      INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
      INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
      WHERE tt.taxonomy IN ('release') /* replace taxonomy */
      AND tr.object_id IN ('.$post_id.') /* replace object_ids */
      AND ( tm.meta_key = 'timestamp' )
      ORDER BY tm.meta_value+0 DESC
      ) AS terms, (SELECT @rownum := 0) AS r
      ) AS allterms WHERE allterms.term_id='.$term_id.' /* replace term_id */");

但是,自从升级到最新版本的 mysql 后,这不起作用。数据库没有改变。是否有任何标准在更高版本的 MySQL 中发生了变化,导致该查询无法正常工作?

【问题讨论】:

“不工作”是什么意思?考虑到您的代表,我希望您知道我们需要错误消息(如果您有错误消息),或者如果您没有错误消息,请说明问题所在。 @HoneyBadger 未提供错误消息。它返回没有结果。事实上,那里应该有结果。 如果您将INNER JOIN 更改为LEFT JOIN,您仍然没有记录吗?可能和join条件有关 如果您使用最新版本,那么最好的方法是完全重写您的查询以使用新的服务器版本功能。 @RuiCosta 您能否在您的建议中发布答案,以便我明白您的意思?谢谢。 【参考方案1】:

尝试设置LEFT JOIN 来验证问题是否是JOIN 条件。

 SELECT allterms.* FROM (
      SELECT @rownum := @rownum + 1 AS rownum, terms.* FROM (
      SELECT DISTINCT t.*, tt.taxonomy, tt.term_taxonomy_id, tm.meta_key, tm.meta_value, tr.object_id
      FROM wp_terms AS t
      LEFT JOIN wp_termmeta AS tm ON ( t.term_id = tm.term_id ) AND ( tm.meta_key = 'timestamp' )
      LEFT JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id AND tt.taxonomy IN ('release') /* replace taxonomy */
      LEFT JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id AND tr.object_id IN ('.$post_id.') /* replace object_ids */
      ORDER BY tm.meta_value+0 DESC
      ) AS terms, (SELECT @rownum := 0) AS r
      ) AS allterms WHERE allterms.term_id='.$term_id.' /* replace term_id */

【讨论】:

以上是关于SQL 查询在最新版本的 MySQL 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

删除边框顶部,更改字体系列,....在 Xamarin iOS 最新版本中不起作用

Spring Boot Embedded Derby 在最新版本中不起作用。

SetEditable在最新的Android版本中不起作用

带有转义字符的jQuery查找功能在最新版本中不起作用

Webpack 开发服务器配置 - contentBase 在最新版本中不起作用

Owl carousel 2 animate 在 chrome 最新版本 (V52) 中不起作用