Mysql-从另一个表中选择,操作数应包含1列错误
我有两个mysql表,我想从另一个表中选择计数大于2的ID 我的问题是: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运算符只能用
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
子句中,并将其联接到FROMuser\u id=target