2

我有三张桌子,Avatar、Super_Avatar 和 Trade。

交易属性 = avName | 买家ID | 卖家ID...
头像属性= avName | 出生日期 | 性别...
Super_Avatar 属性 = avName | 智慧..

都通过avName连接。交易表表示一个头像被交易了多少次。我使用计数来隔离化身已交易的数量(通过计算特定化身(avName)在交易表中出现的次数)。我只想要那些出现两次以上的。

SELECT avName
INTO tempTable
FROM Trade
GROUP BY avName
HAVING COUNT(*) > 2;

如何在同一查询中通过 avName 将刚刚创建的临时表 (tempTable) 与 Super_Avatar 和 Avatar 表连接起来?

4

2 回答 2

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
于 2013-04-10T18:03:25.497 回答
0

使用公用表表达式,您甚至不需要临时表

with tempTable as (
  SELECT avName
  FROM Trade
  GROUP BY avName
  HAVING COUNT(*) > 2
) 
select *
from other_table
  join tempTable on ...

(这是 ANSI SQL,适用于所有现代 DBMS)

于 2013-04-10T17:56:08.093 回答