You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL嵌套查询指定字段失效,如何替换(*)实现相同效果?

解决方案

你不需要在FROM子查询里选择pizzeria_name或person_name,这两个字段并不属于person_visits表,它们是外层通过子查询从person和pizzeria表中获取的。

原查询中FROM子查询的SELECT *实际取了person_visits的所有字段,但外层仅用到其中的person_id和pizzeria_id来关联获取名称。因此只需将SELECT *替换为SELECT person_id, pizzeria_id,就能得到与原查询完全一致的结果:

SELECT ( SELECT person.name FROM person WHERE person.id = pv.person_id ) AS person_name,
       ( SELECT pizzeria.name FROM pizzeria WHERE pizzeria.id = pv.pizzeria_id ) AS pizzeria_name 
FROM ( 
  SELECT person_id, pizzeria_id
  FROM person_visits
  WHERE visit_date BETWEEN '2022-01-07' AND '2022-01-09' 
) AS pv 
ORDER BY person_name ASC, pizzeria_name DESC;

补充说明

你之前尝试的pizzeria.id、pv.pizzeria_id写法无效,原因是FROM子查询基于person_visits表,该表仅包含person_id、pizzeria_id、visit_date字段(对应表结构),不存在pizzeria表的字段。名称的获取逻辑已经由外层的两个标量子查询完成,子查询只需提供关联所需的person_id和pizzeria_id即可。

内容的提问来源于stack exchange,提问作者Evgeny Step

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 03:06:29