0

我在 ExactTarget 中使用以下查询,想知道为什么我需要在 GROUP BY 语句中使用表名,而不是在 WHERE 语句中。

SELECT _Open.SubscriberKey, MIN(_Open.EventDate) AS EventDate3

FROM _Open
INNER JOIN _Job
ON _Open.JobID = _Job.JobID

WHERE EmailID = 10339639

GROUP BY _Open.SubscriberKey

它工作正常,只是想知道为什么/何时在列名前面需要表名,何时不需要。

4

1 回答 1

2

如果字段对表是唯一的,那么您不需要表名。SubscriberKey 仅存在于一个表中,因此您可以说

SubscriberKey or _open.Subscriberkey (optional)

但如果字段存在于 1 个以上的表中,则需要指定要使用的表。例如 JobID 存在于 2 个表中,因此您必须指定哪个表 (jobs.JobID or _open.JobID)

此约定与 where 子句或 group by 查询无关。

于 2015-10-30T17:47:30.627 回答