使用count根据外观数量隔离记录

时间:2013-04-10 17:53:11

标签: sql ms-access

我有三张桌子,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)?

2 个答案:

答案 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)