缺少'featurename'的列分配



我正在尝试编写一个案例语句,其中我需要运行子查询以检查记录是否可在访问表中可用。如果该人有访问权限,那么得分应在0到100之间得到任何cocece的保管,如果不是,则该值应为null。但是查询因错误而失败,缺少" id"的列分配。

我的查询:

SELECT 
        CASE
            WHEN EXISTS (SELECT * FROM hive_dsn.db.access AS aa WHERE ub.id=aa.id) 
                 THEN COALESCE(ub.score*100,0)
            ELSE 
                 NULL
        END AS UNUSED
FROM hive_dsn.db.unused_output AS ub;

基本上,我不了解错误语句。这个错误在说什么,我该如何解决。

预先感谢。

我弄清楚了其中的条件是在没有任何联接的情况下检查列而不是值。我重写查询如下:

SELECT 
        CASE
            WHEN EXISTS (SELECT ub.personid FROM hive_dsn.db.access AS aa 
                              JOIN hive_dsn.db.unused_output AS ub  ON ub.id=aa.id) 
                    THEN COALESCE(ub.score*100,0)
            ELSE NULL
        END AS UNUSED
from hive_dsn.db.unusedoutput AS ub;

此加入条件解决了问题。

而不是相关的子查询,可以使用JOIN来实现。

这是样本...

 SELECT 
        CASE
            WHEN  aa.id is null then null                
                else THEN COALESCE(ub.score*100,0)
               END AS UNUSED
FROM hive_dsn.db.unused_output AS ub
left join hive_dsn.db.access AS aa
on ub.id=aa.id     ;

注意:如果表格中有1:n关系船,则使用 in select select statement。>

相关内容

  • 没有找到相关文章

最新更新