以下查询有效:
SELECT
cat.category,
exp.*
FROM
`expenses` exp
join
`categories` cat ON exp.Transaction like concat("%",cat.key,"%")
LIMIT
1000
我想要做的是完全外部联接,因此我可以找到所有没有cat.key的交易。
我当前收到以下错误消息:
如果没有相等的条件,则不能使用FULL OUTER JOIN 连接两侧的字段。
我该如何解决?我尝试使用“不喜欢”,但这不能满足我的需求。
答案 0 :(得分:2)
以下是BigQury标准SQL
#standardSQL
SELECT
MAX(IF(exp.Transaction LIKE CONCAT("%",cat.key,"%"), cat.category, NULL)) category,
ANY_VALUE(EXP).*
FROM `project.dataset.expenses` `exp`
CROSS JOIN `project.dataset.categories` cat
GROUP BY TO_JSON_STRING(`exp`)
LIMIT 1000
尝试,除非问题中缺少某些特定细节,否则它应该可以工作
答案 1 :(得分:0)
您想要一个LEFT JOIN
。我相信这应该在BigQuery中起作用:
SELECT e.*
FROM (SELECT e.*, 1 as dum
FROM expenses e
) e LEFT JOIN
(SELECT c.*, 1 as dum
FROM categories c
) c
ON e.dum = c.dum AND
e.Transaction like concat('%', c.key, '%)
WHERE c.key IS NULL
LIMIT 1000;
至少,当我尝试类似查询时,它们会起作用。
我会警告说,这种方法无法很好地扩展。因此它可能不适用于您的实际数据。