SQL错误:#1242 - 子查询返回超过1行

时间:2013-02-04 06:44:07

标签: php mysql sql

我收到“错误:#1242 - 子查询返回超过1行”试图执行此查询:

SELECT id FROM postcodes WHERE pcd LIKE (SELECT CONCAT(pcd,' %') FROM towns WHERE id IN (31898,12828,15771,7604))

您对此查询有任何建议吗?

3 个答案:

答案 0 :(得分:3)

JOIN两个表而不是IN谓词,如下所示:

SELECT p.id 
FROM postcodes p
INNER JOIN towns t ON p.pcd LIKE CONCAT(t.pcd,' %')
WHERE t.id IN (31898,12828,15771,7604);

答案 1 :(得分:1)

检查此查询:

SELECT CONCAT(pcd,' %') FROM towns WHERE id IN (31898,12828,15771,7604)

也许它的结果不止一行。

或者您可以限制子查询结果。

SELECT id FROM postcodes WHERE pcd LIKE (SELECT CONCAT(pcd,' %') FROM towns WHERE id IN (31898,12828,15771,7604) LIMIT 1)

答案 2 :(得分:0)

您必须将子查询限制为一行。您应该添加一些过滤器以将结果限制为一行,或者将LIMIT 1添加到您的子查询中将为您提供帮助。

相关问题