Flexi Search关联查询IS NULL关键字失效问题求助
解决Flexi查询单字段为空无结果的问题
你当前的查询用了内连接(join),只要AviationDispute的deliveryId或invoiceId其中一个为空,内连接就会直接过滤掉这条争议记录,所以只有两个字段都有值时才会返回结果。
把连接方式改成左连接(left join),同时调整where条件区分两种单字段存在的场景,就能解决问题:
select {p:pk} from {AviationDispute as p left join AviationB2BDocuments as a on {p:invoiceId}={a:pk} left join AviationDelivery as d on {p:deliveryId} = {d:pk}} where ({p:deliveryId} is not null and {d:deliveryId} LIKE '%searchTerm%') or ({p:invoiceId} is not null and {a:invoiceNumber} LIKE '%searchTerm%')
关键修改点:
- 用
left join替代join:即使deliveryId或invoiceId为空,AviationDispute的基础记录也会被保留 - where条件拆分:分别针对「运单存在且匹配搜索词」、「发票存在且匹配搜索词」两种情况做判断,确保单字段提交的争议能被命中
内容的提问来源于stack exchange,提问作者siddarth
相关产品推荐
相关产品推荐

