我有一个查询,它返回以下错误:
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_key
或LIMIT 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',
...