如何避免子查询的多个结果

时间:2014-06-27 01:12:45

标签: mysql

大家好我是MySQL的新手,这可能是

更容易提问,但我对mysql来说是全新的。

我有两张桌子订购并购买了两个描述 桌子看起来像这样....

OrdersTable中。

order id: 
ordername:
shopnum(fk)

Shopstable *

shopname:
shopnum(pk):

我正在使用这样的子查询,以获得具有最多订单数量的商店名称.... 喜欢... 19 xyzshop 。 13 hjjddshop 。 6 reebok商店

select shopname 
from shopstable 
where shopnum in
    (select count(orderid) as highest ,shopnum 
     from orderTable 
     group by shopnum)

它抛出错误,显示列应为1,因为子查询返回2个结果...所以我如何避免这种情况并得到相应的结果...帮助将被赞赏... :)):) / p>

4 个答案:

答案 0 :(得分:2)

它没有抱怨,因为子查询返回2个结果,但有两列。但即使它只返回一个列,它也会返回2个结果,主查询也会这样做。

在任何情况下都不需要子查询:

SELECT s.shopname 
FROM Shopstable s 
JOIN OrdersTable o ON s.shopnum=o.shopnum 
GROUP BY s.shopname 
ORDER BY count(*) DESC 
LIMIT 1

答案 1 :(得分:2)

使用此:

select shopname 
from shopstable 
where shopnum in
    (select shopnum 
     from orderTable 
     group by shopnum
     order by count(*) DESC
     limit 1)

答案 2 :(得分:0)

删除查询中的count(orderid) as highest ,。您应该只在子查询中选择一列

答案 3 :(得分:0)

我想你想要这样的东西......

SELECT shopname, count(*) as highest 
FROM shopstable 
INNER JOIN orderTable ON (shopstable = orderTable.shopname)
GROUP BY shopstable.shopname

我认为这是你想要的结果?