我正在尝试使用 PyPika 构建一个选择语句。两个表都有一个id
列,我试图从两个表中选择所有列,但id
第一个表中的列除外。
这是我想要结束的查询,它在 BigQuery 中正常运行:
SELECT t.* EXCEPT(id), s.* from t join s on t.id = s.id
我一直无法弄清楚如何EXCEPT
进入 select 子句。
我尝试了以下语法,但except_of()
在这种情况下是不允许的:
t = Table("t")
s = Table("s")
query = Query.from_(t).join(s).on(t.id == s.id).select(t.star.except_of("id")).select(s.star)
我还尝试了一个自定义函数,但这会在结果查询中放置一个无效的逗号。这是我尝试过的:
except_select = CustomFunction("EXCEPT", ["column_to_exclude"])
query = Query.from_(t).join(s).on(t.id == s.id).select(t.star).except_select("id")).select(s.star)
错误地生成
SELECT t.*, EXCEPT(id), s.* from t join s on t.id = s.id
有没有人对如何解决这个问题有任何建议?