Mysql 在子查询中,我试图从外部查询中定义的表中进行选择
嗨,我收到错误代码:1146。下一个sql代码中不存在表“sakila.t”Mysql 在子查询中,我试图从外部查询中定义的表中进行选择,mysql,sql,Mysql,Sql,嗨,我收到错误代码:1146。下一个sql代码中不存在表“sakila.t” select distinct address.address from ( select inventory.store_id, count(inventory.inventory_id) as num_of_items from inventory group by inventory.store
select distinct address.address
from (
select inventory.store_id,
count(inventory.inventory_id) as num_of_items
from inventory
group by inventory.store_id
) as T,
address,
store,
where T.num_of_items <= all (select num_of_items from T)
and store.store_id = T.store_id
and store.address_id = address.address_id
从注释中,这应该返回库存中商品数量最少的商店的地址
我想这是因为我试图从子查询中的T获取信息,而T是一个变量,在sakila数据库中没有定义。这是问题吗?如果是,为什么?如果没有,请告诉我代码有什么问题。谢谢。要使这种SQL查询正常工作,您需要分解任务 首先,您要计算出每个商店包含多少商品。这很容易,我想你是对的
select inventory.store_id,
count(inventory.inventory_id) as num_of_items
from inventory
group by inventory.store_id
接下来,您要确定哪个商店的商品数量最少。你这样做
select inventory.store_id,
count(inventory.inventory_id) as num_of_items
from inventory
group by inventory.store_id
order by count(inventory.inventory_id) ASC
limit 1
接下来,将其嵌套在一个查询中,该查询查找描述存储的数据
select address.address
from (
select inventory.store_id,
count(inventory.inventory_id) as num_of_items
from inventory
group by inventory.store_id
order by count(inventory.inventory_id)
limit 1
) as T
join store on T.store_id = store.store_id
join address on store.address_id = address.address_id
这就是你需要的结果。这里的技巧是使用聚合子查询计数。。。订购人。。。限制1以找到所需的特定项,然后使用一组join`子句收集所需的数据,以显示所找到项的相关信息
当您调试和排除此类问题时,您可以从最简单的查询开始,并逐步建立查询集。一定有更好的方法编写此查询集。我认为45分钟内没有触及它的原因是SQL太迟钝了,没有人能轻易地理解你想做什么。你试过用连接重写它吗?我怎么能用连接来写呢?我必须在where中使用all关键字,是吗?你能从概念上解释一下这个查询应该做什么吗?返回库存中商品数量最少的商店的地址。酷,这很有帮助。可以显示表的架构吗?最好是一个SQLFIDLE和CREATETABLE。。。创建表格相关部分的语句。您好,首先-感谢您提供的详细答案。但我真的很想知道我做这件事的方式有什么问题,以避免将来犯错误。