次のクエリを実行すると:
SELECT count(*) as count, $new_source as name
from news
LET $new_source = if(eval("source.indexof('Other') === 0"), "Other", source)
where country_id = "111111"
group by $new_source
次のようなエラーがスローされます。
com.orientechnologies.orient.core.exception.OCommandExecutionException: 現在のレコードが NULL であるため、式項目 'source' を解決できません
「ニュース」クラスに指定された country_id のレコードが少なくとも 1 つある場合はうまく機能しますが、指定された country_id のレコードがない場合、このエラーがスローされます。
country_id に関係なく、すべてのニュース レコードに対して一般的なクエリを使用しているため、特定の国にレコードがない場合は、空のレコード セットを返す必要があります。
また、orientdb の ifnull 関数を使用して null 値をスキップしようとしました。次のようになります。
SELECT count(*) as count, $new_source as name from news LET $new_source = ifnull(source, 0, if(eval("source.indexof('Other') === 0"), "Other", source)) where country_id = "111111" group by $new_source
しかし、それは機能しておらず、同じエラーをスローしています。
OrientDb 2.1.8 を使用しています。JavaScript関数を使用してコンソールから呼び出したくありません(ここで提案されているように)
group by で if を使用しているときに null 値をスキップする方法はありますか?