我有 3 个 dremel 链接表:2 个身份表和 1 个连接 2 个身份表的表。
表 A(4500 行):
- a_id(键);
- a_attr1;
- a_attr2。
表 B(1500 行):
- b_id(键);
- b_attr1;
- b_attr2。
表 C(700 行):
- 援助;
- 出价。
简化的查询是:
SELECT
A.a_id,
a_attr1,
GROUP_CONCAT(STRING(b_attr1)) AS b_attr1,
STRFTIME_UTC_USEC(NOW(), '%a %e-%b-%Y %R %Z'),
SUM(b_attr2) AS b_attr2
FROM [dataspace_name]:[project_name]:[dataset_name].A
LEFT OUTER JOIN
(SELECT
b_id,
b_attr1,
b_attr2,
a_id
FROM [dataspace_name]:[project_name]:[dataset_name].B
JOIN [dataspace_name]:[project_name]:[dataset_name].C
ON [dataspace_name]:[project_name]:[dataset_name].B.b_id = [dataspace_name]:{project_name]:[dataset_name].C.b_id
) AS BC
ON A.a_id = BC.a_id
WHERE
a_attr2 = 1
GROUP BY
a_attr1
HAVING
(b_attr2 IS NULL) OR (b_attr2 > 0)
ORDER BY
a_attr1
;
这个查询运行了几个月,直到上周一,2013 年 5 月 13 日。
我得到的错误信息是:
大表 C 必须作为连接查询中最左边的表出现。
我尝试在错误消息之后重新编写查询并交换表,但我得到了关于最右边表的相同消息。
非常感谢有关可能导致失败的原因以及如何修复查询的任何建议。