大家好我是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>
答案 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
我认为这是你想要的结果?