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 在最新版本中不起作用。