我之前提取了一些数据,发现我的结果太多了,没有任何用处(返回了400多万行)。我发现罪魁祸首是大量的I,每个I都有几千条记录。
这是数据的结构。我有两张桌子。tbl1有每个' ATID‘的单一记录(基本上,ATID是一个刻度id )。不过,每个ATID在本质上都是它自己的桌子--它对每个规模的项目都有记录。tbl2枚举这些项--它对每个ATID的每个缩放项都有一行。因此,对于每个ATID,它有1到500,000行(我知道,非常多)。
我想排除有100行以上的ATID。这是一个我有只读权限的数据库。
这是我最初的查询:
SELECT tbl1.ATID, tbl1.ATDesc, tbl2.AValue, tbl2.ADesc, tbl2.APosNeg
FROM tbl1 LEFT OUTER JOIN tbl2 ON (tb1.ATID = tbl2.ATID);
下面是我用来在每个tbl2中获取ATID和记录计数列表的查询:
select ATID, count(*) as row_count
from tbl2
group by ATID
order by row_count desc;
对于我的最终产品,我只想返回tbl2中行数少于100行的ATID。但是,如果我甚至尝试使用row_count变量向第二个查询添加WHERE子句,它就失败了。因此,我不知道如何将这两个查询组合在一起,并将WHERE子句放入其中。
我唯一的选择是当我知道ATID有太多的记录时,具体地排除ATID,但是有太多的记录不能排除(例如,使用WHERE = 1016,而不是ATID= 554和NO.Atid=554)。等)
发布于 2016-10-07 14:39:06
您已经完成了,只需将两个查询放在一起:
SELECT tbl1.ATID, tbl1.ATDesc, tbl2.AValue, tbl2.ADesc, tbl2.APosNeg
FROM tbl1 LEFT OUTER JOIN tbl2 ON (tb1.ATID = tbl2.ATID)
WHERE tbl1.ATID NOT IN (
select ATID
from tbl2
group by ATID
HAVING COUNT(*) >= 100
)
https://stackoverflow.com/questions/39919826
复制相似问题