仅在我的服务器返回"Subquery returns more than 1 row"



我有一个查询,它返回以下错误:

Warning: mysqli_query(): (21000/1242): Subquery returns more than 1 row in /usr/home/..........

这是一个查询:

SELECT SQL_CALC_FOUND_ROWS p.*, 
(SELECT meta_value FROM wp_postmeta pm WHERE pm.post_id = p.ID AND meta_key = 'localidad') AS 'localidad', 
(SELECT meta_value FROM wp_postmeta pm WHERE pm.post_id = p.ID AND meta_key = 'direccion') AS 'direccion', 
(SELECT meta_value FROM wp_postmeta pm WHERE pm.post_id = p.ID AND meta_key = 'c.p.') AS 'cp', 
(SELECT meta_value FROM wp_postmeta pm WHERE pm.post_id = p.ID AND meta_key = 'codigo') AS 'codigo', 
(SELECT GROUP_CONCAT(t.name SEPARATOR ';') FROM wp_terms t, wp_term_taxonomy tx, wp_term_relationships tr   
WHERE t.term_id = tx.term_id AND tx.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = p.ID AND tx.taxonomy = 'gama' ORDER BY tx.term_taxonomy_id) AS 'gama', 
(SELECT t.name FROM wp_terms t, wp_term_taxonomy tx, wp_term_relationships tr 
WHERE t.term_id = tx.term_id AND tx.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = p.ID AND tx.taxonomy = 'pais' ORDER BY tx.term_taxonomy_id) AS 'pais', 
(SELECT t.term_id FROM wp_terms t, wp_term_taxonomy tx, wp_term_relationships tr 
WHERE t.term_id = tx.term_id AND tx.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = p.ID AND tx.taxonomy = 'pais' ORDER BY tx.term_taxonomy_id) AS 'id_pais', 
(SELECT t.name FROM wp_terms t, wp_term_taxonomy tx, wp_term_relationships tr 
WHERE t.term_id = tx.term_id AND tx.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = p.ID AND tx.taxonomy = 'provincia' ORDER BY tx.term_taxonomy_id) AS 'provincia', 
(SELECT meta_value FROM wp_postmeta pm 
WHERE pm.post_id = p.ID AND meta_key = 'localizacion') AS 'localizacion' 
FROM wp_posts p 
WHERE 1=1 AND p.post_type = 'distribuidor' AND (p.post_status = 'publish' OR p.post_status = 'acf-disabled' OR p.post_status = 'private') 
ORDER BY p.post_title ASC

它在我试过的一对服务器上工作,但在我的服务器上不工作。

是否对服务器进行了任何配置以避免出现错误?或者有其他方法可以创建查询吗?

谢谢

这意味着您的服务器在数据库中存储了不同的数据:有多行具有相同的meta_key(如果错误与使用meta_key的查询有关,如果不是-调整列名(

GROUP BY meta_keyLIMIT 1添加到子查询中。例如

SELECT SQL_CALC_FOUND_ROWS p.*, 
(SELECT meta_value FROM wp_postmeta pm WHERE pm.post_id = p.ID AND meta_key = 'localidad' LIMIT 1) AS 'localidad', 
...

最新更新