Mysql-从另一个表中选择,操作数应包含1列错误

Mysql-从另一个表中选择,操作数应包含1列错误,mysql,Mysql,我有两个mysql表,我想从另一个表中选择计数大于2的ID 我的问题是: SELECT * FROM `firsttable` where from_user_id in (SELECT target,count(*) as c FROM `second table`where type='follower' group by target having c>2) 但是,我遇到的操作数应该包含1列错误(而且,每当我从xy中选择z时,查询似乎需要很长时间)(选择…)查询)。in运算符只能用

我有两个mysql表,我想从另一个表中选择计数大于2的ID

我的问题是:

SELECT * FROM `firsttable` where from_user_id in (SELECT target,count(*) as c FROM `second table`where type='follower' group by target having c>2)

但是,我遇到的操作数应该包含1列错误(而且,每当我从xy中选择z时,查询似乎需要很长时间)(选择…)查询)。

in运算符只能用于单列查询。幸运的是,您不必在选择列表中有
计数
,就可以将其包含在
having
子句中:

SELECT * 
FROM   `firsttable` 
WHERE  from_user_id IN (SELECT   target
                        FROM     `second table`
                        WHERE    type =' follower' 
                        GROUP BY target 
                        HAVING   COUNT(*) > 2)

操作数中
右侧的子查询应仅返回一列。您可以使用:
HAVING count(*)>2
而不是将其放在
SELECT
子句中。关于慢度,您应该尝试在联接中使用第二个表。谢谢,在这种情况下,联接查询如何工作?将子查询上移到
FROM
子句中,并将其联接到
FROM
user\u id=target