微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Clickhouse 子查询使用主查询中的属性

如何解决Clickhouse 子查询使用主查询中的属性

我需要使用来自主查询的参数执行子查询。但是当我可以尝试执行时:

SELECT
    (
      SELECT time 
      FROM changes ch2
      WHERE ch2.trackable_id = ch.trackable_id AND ch.action = 'create'
      LIMIT 1
    )
FROM changes ch

LIMIT 1000

出现错误

Error running query: Code: 47,e.displayText() = DB::Exception:
Missing columns: 'ch.trackable_id' while processing query:
'SELECT time 
      FROM changes ch2
      WHERE ch2.trackable_id = ch.trackable_id AND ch.action = 'create'
      LIMIT 1',required columns: 'time' 'ch.trackable_id' 'trackable_id' 'action',maybe you meant: ['time','trackable_id','action']:

While processing

(SELECT time 
  FROM changes ch2
  WHERE ch2.trackable_id = ch.trackable_id AND ch.action = 'create'
  LIMIT 1) AS _subquery1 (version 21.3.14.1 (official build))

任何想法,请。在 Postgresql 上它工作正常。

我对这个数据库的经验很少。也许我需要使用不同的方法来构建查询

解决方法

也许 join 和聚合会起作用?

SELECT ch.*,ch2.*
FROM changes ch LEFT JOIN
     (SELECT ch2.trackable_id,MAX(time) as create_time
      FROM changes ch2
      WHERE ch2.action = 'create'
      GROUP BY ch2.trackable_id
     ) ch2
     ON ch2.trackable_id = ch.trackable_id;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。