我正在尝试通过计算他们在朋友的表中的出现次数来检索我拥有1个以上朋友的客户的姓名。那个只显示friend_id和cust_id以及location_id的朋友表,我还要提到我有一个位置表,其中包含有关位置的所有详细信息。但不幸的是,我在顶部提到了操作数问题; 有人可以向我解释清楚我要做什么,为什么我的查询错了。我看过类似的东西仍然没有得到它背后的逻辑。请不要参考另一个答案,如果您认为这个问题太基础,请不要发表评论;
select* from customer
where custid in (select custid, count(custid) as occ from friend group by
custid having occ >=2);
答案 0 :(得分:0)
如错误消息中所述,子查询在Select
列表
使用COUNT
子句中的Having
聚合而不是别名,并从count(custid)
select
SELECT *
FROM customer
WHERE custid IN (SELECT custid
FROM friend
GROUP BY custid
HAVING Count(custid) >= 2);
最好使用JOIN
代替IN
,但对Mysql
SELECT C.*
FROM customer C
JOIN (SELECT custid,
Count(custid) AS occ
FROM friend
GROUP BY custid
HAVING occ >= 2) F
ON C.custid = F.custid;
答案 1 :(得分:0)
使用IN
子句时,错误在内部查询中有多个列。
如果没有IN
子句,可以做得更好,如下所示。
SELECT cust_name, cust_surname
FROM (SELECT cust_name, cust_surname, COUNT (*)
FROM customer x JOIN friend y ON (x.cust_id = y.cust_id)
GROUP BY cust_name, cust_surname
HAVING COUNT (*) > 1);