Mysql 如何避免子查询产生多个结果
大家好,我是MySQL的新手,这可能是 更容易提问,但我对mysql是全新的 我订了两张桌子,买了两张 桌子看起来像这样 秩序稳定Mysql 如何避免子查询产生多个结果,mysql,Mysql,大家好,我是MySQL的新手,这可能是 更容易提问,但我对mysql是全新的 我订了两张桌子,买了两张 桌子看起来像这样 秩序稳定 order id: ordername: shopnum(fk) 商店马厩* shopname: shopnum(pk): 我正在使用这样的子查询,以获取订单数量最多的店铺名称。。。。 像…19 XYZ商店 . 13 hjjddshop . 6锐步店 select shopname from shopstable where
order id:
ordername:
shopnum(fk)
商店马厩*
shopname:
shopnum(pk):
我正在使用这样的子查询,以获取订单数量最多的店铺名称。。。。
像…19 XYZ商店
. 13 hjjddshop
. 6锐步店
select shopname
from shopstable
where shopnum in
(select count(orderid) as highest ,shopnum
from orderTable
group by shopnum)
它抛出错误,显示列应为1,这是因为子查询返回2个结果…因此我如何避免此情况并获得适当的结果…将非常感谢帮助…:):)删除查询中最高的计数(orderid)。。您应该在子查询中只选择一列删除查询中最高的计数(orderid)。您应该在子查询中只选择一列这不是抱怨,因为子查询返回两个结果,但返回两列。但是,即使它只返回一列,它也会返回两个结果,主查询也会这样做 在任何情况下都不需要子查询:
SELECT s.shopname
FROM Shopstable s
JOIN OrdersTable o ON s.shopnum=o.shopnum
GROUP BY s.shopname
ORDER BY count(*) DESC
LIMIT 1
它没有抱怨,因为子查询返回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
使用以下命令:
select shopname
from shopstable
where shopnum in
(select shopnum
from orderTable
group by shopnum
order by count(*) DESC
limit 1)
使用以下命令:
select shopname
from shopstable
where shopnum in
(select shopnum
from orderTable
group by shopnum
order by count(*) DESC
limit 1)
我想你想要这样的东西
SELECT shopname, count(*) as highest
FROM shopstable
INNER JOIN orderTable ON (shopstable = orderTable.shopname)
GROUP BY shopstable.shopname
我想这就是你想要的结果?我想你想要这样的结果
SELECT shopname, count(*) as highest
FROM shopstable
INNER JOIN orderTable ON (shopstable = orderTable.shopname)
GROUP BY shopstable.shopname
我想这就是你想要的结果?那么我如何获得订单数量最多的店铺名称列表我如何获得订单数量最多+1的店铺名称列表。但在我看来,您应该将中的
改为=
。我考虑过,但决定保持原样。如果orderTable
表为空,子查询返回零行,那么中的更合适(我认为当子查询为空时,严格的SQL不允许=
,尽管默认情况下MySQL是允许的)。在标量子查询不返回任何行的上下文中,该值将被视为空。我很确定这是ANSI的标准行为;这就是我熟悉的所有数据库的工作方式。因此,除之外的任何比较都为空
将不会计算为真。+1。但在我看来,您应该将
中的改为=
。我考虑过,但决定保持原样。如果orderTable
表为空,子查询返回零行,那么中的更合适(我认为当子查询为空时,严格的SQL不允许=
,尽管默认情况下MySQL是允许的)。在标量子查询不返回任何行的上下文中,该值将被视为空。我很确定这是ANSI的标准行为;这就是我熟悉的所有数据库的工作方式。因此,除之外的任何比较都为空
将不会计算为真。