我在mysql上有此查询:
选择ID((( 选择IFNULL(sec_to_time(sum(time_to_sec(time_to_sec(timediff(tfo.a,tfo.da))))),'00:00')as tempo 从 ( 选择不同的GG_SETTIMANA,ID_FASCIA 来自Operatori_piano id_istruttore = o.id )作为SA 左键加入TAB_FASCE_ORARIE作为tfo on tfo.id = sa.id_fascia)节奏从操作员作为otipo = 2且attivo = 1
mySQL返回此错误:
错误代码:1054。未知列'o.id'in where子句
我尝试了很多组合,但行不通。请您的帮助,非常感谢!
出现的错误是由于您将选择语句嵌套在选项中,在查询中,哪个名称o为别名。别名仅在直接的子查询中可见。
没有 lot 有关您的模式的更多信息,不可能建议正确的,工作解决方案是什么(它可以直接使用我们所知道的您的模式,但在语法上是正确的,但是它可能在功能上不正确)。但是,作为一般的经验法则,请尝试避免相关的子查询(推定的谓词)。除了对维护和性能不利外,MySQL在优化此类疑问方面也很差。
o在子查询内的o别名,但查看您的代码可以避免使用内部join
避免对外部选择的引用 SELECT id , (
SELECT IFNULL(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(tfo.a, tfo.da)))),'00:00') as tempo
FROM (
SELECT DISTINCT gg_settimana, id_fascia
FROM operatori_piano
INNER JOIN operatori as o ON id_istruttore = o.id
WHERE o.tipo = 2 AND o.attivo = 1
) as sa
LEFT JOIN tab_fasce_orarie as tfo ON tfo.id = sa.id_fascia
) as tempo
FROM operatori
WHERE tipo = 2 AND attivo = 1