ERROR 1241(21000):操作数应包含1列 - 学校项目

时间:2018-04-16 14:03:51

标签: mysql sql

SELECT naam, adres, postcode, plaats, telefoon  
FROM klanten 
WHERE plaats IN (SELECT * FROM(
                    (SELECT plaats, COUNT(plaats) AS W 
                     FROM klanten 
                     GROUP BY plaats 
                     ORDER BY W DESC LIMIT 1) AS T));

那么,我在哪里玩耍?我的语法错误在哪里或者我正在努力。

我的目标是从大多数客户(klanten)居住的城市打印姓名(naam),地址(地址),地点(plaats),电话(电话)(电话)。在你问之前,我正在做这对于学校项目而言我们必须使用旧版本的MySQL,它不允许在子查询中使用LIMIT 1。这就是Select * FROM存在子查询的原因。

1 个答案:

答案 0 :(得分:2)

您尝试编写的查询如下所示:

SELECT naam, adres, postcode, plaats, telefoon
FROM klanten
WHERE plaats IN (SELECT plaats
                 FROM klanten
                 GROUP BY plaats
                 ORDER BY COUNT(*) DESC
                 LIMIT 1
                );

语法错误是因为IN子查询返回两列 - 这在消息中非常明显。子查询中的子查询不是必需的;你可以ORDER BY聚合表达。

此外,IN有点误导。您可以使用=