我有三张桌子,Avatar,Super_Avatar和Trade。
交易属性= avName |买家ID | sellerID ...
头像属性= avName | DOB |性别...
Super_Avatar属性= avName |智慧..
所有都通过avName连接。交易表表示化身交易的次数。我使用计数来隔离化身已被交易的数量(通过计算特定化身(avName)在交易表中出现的次数)。我只想要那些出现两次以上的人。
SELECT avName
INTO tempTable
FROM Trade
GROUP BY avName
HAVING COUNT(*) > 2;
如何在同一个查询中通过avName连接我刚创建的临时表(tempTable)?
答案 0 :(得分:1)
您无法插入临时表,然后在同一查询中选择或加入它。但是,您可以使用子查询或CTE(取决于数据库):
select *
from
(
SELECT avName
FROM Trade
GROUP BY avName
HAVING COUNT(*) > 2
) t
inner join Avatar a
on t.avName = a.avName
inner join Super_Avatar s
on t.avName = s.avname
由于您使用的是MS Access,因此每个连接都需要括号,因此您应该可以使用:
select *
from
((
SELECT avName
FROM Trade
GROUP BY avName
HAVING COUNT(*) > 2
) as t
inner join Avatar as a
on t.avName = a.avName)
inner join Super_Avatar as s
on t.avName = s.avname
答案 1 :(得分:0)
使用公用表表达式甚至不需要临时表
with tempTable as (
SELECT avName
FROM Trade
GROUP BY avName
HAVING COUNT(*) > 2
)
select *
from other_table
join tempTable on ...
(这是ANSI SQL,适用于所有现代DBMS)