简体   繁体   English

在where子句结果中具有LEFT JOIN的SELECT表

[英]SELECT table with LEFT JOIN in where clause result

Below query return : #1054 - Unknown column 'word.id' in 'where clause' 在查询下面返回:#1054-“ where子句”中的未知列“ word.id”

select * from word,(
SELECT sqrt(variance(ifnull(re_freq,0)))/avg(ifnull(re_freq,0)) cv
FROM pre_cat 
left join (select * from goal where wordid= word.id)g on pre_cat.id= g.catid) gg

How can I fix it? 我该如何解决?

below query return correct result but just for one record! 下面的查询返回正确的结果,但仅用于一条记录!

SELECT  avg(ifnull(re_freq,0)) , variance(ifnull(re_freq,0)),sqrt(variance(ifnull(re_freq,0)))/avg(ifnull(re_freq,0))
FROM pre_cat 
left join (select * from goal where wordid= 9690)g on pre_cat.id= g.catid

and crrect result of this query is: 0.500000000375 Upldated schema SQL fiddle http://sqlfiddle.com/#!2/de6c0/2 该查询的正确结果是:0.500000000375升级的架构SQL小提琴http://sqlfiddle.com/#!2/de6c0/2

How cant I do it for All result? 我如何才能做到全部结果? Please help me! 请帮我!

below stored procedure work correctly, but takes too long! 下面的存储过程可以正常工作,但是需要太长时间!

BEGIN
    DECLARE wo_id INT;
    DECLARE num INT;
    DECLARE i INT;
    DECLARE res DOUBLE;
    SELECT COUNT(*) FROM word INTO num;
    SET i=0;
    WHILE i<num DO 
        SELECT  sqrt(variance(ifnull(re_freq,0)))/avg(ifnull(re_freq,0)) FROM pre_cat left join (select * from goal where wordid= i )g on pre_cat.id= g.catid INTO res;
        update word set cv=res where id=i;
        SET i = i + 1;
    END WHILE;
END

your join syntax is wrong. 您的连接语法错误。 as Jens said we cannot refer the outer table into inner sql. 正如Jens所说,我们不能将外部表引用到内部sql中。 you can select like the following 您可以选择如下所示

select * from word,(
SELECT sqrt(variance(ifnull(re_freq,0)))/avg(ifnull(re_freq,0)) cv
FROM pre_cat 
left join (select goal.* from goal join word on goal.wordid= word.id)g on pre_cat.id= g.catid) gg
select * from word join
(SELECT sqrt(variance(ifnull(re_freq,0)))/avg(ifnull(re_freq,0)) cv,
       g.wordid
FROM pre_cat 
left join goal g on pre_cat.id= g.catid
group by g.catid) gg on gg.wordid= word.id

Just join the word table with the subquery by wordid 只需通过wordid将单词表与子查询连接

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM