是否可以为MySQL中的联接表提供别名? 例如
Select *
From Customers
Natural Join Transaction as CT
Where (Select Count(CT.Customer_ID) ) >= 2
CT会引用连接表还是Transaction表? 如果它引用了Transaction表,我如何在子查询中引用连接表?
答案 0 :(得分:4)
不,你不能在MySQL中这样做。在其他数据库中,您可以使用CTE来实现此目的。 (在任何数据库中,您都可以使用临时表,但这不是一个好的解决方案。)
注意:请勿使用natural join
。这是一个等待发生的错误。
要表达您的查询,请使用ON
或USING
子句。对于您的查询,它将是这样的:
Select c.*, ct.*
From Customers c Join
Transaction as CT
ON c.Customer_ID = CT.Customer_ID JOIN
(select t2.Customer_ID, count(*) as cnt
from Transaction t
group by t2.CustomerId
where cnt >= 2
) cct
ON cct.Customer_ID = cct.Customer_Id;
答案 1 :(得分:1)
根据您的评论:
抓住所有有2笔或更多交易的客户
这是使用exists
的一个选项:
select *
from customers c
where exists (
select 1
from transaction t
where c.customerid = t.customerid
having count(*) > 1
)