我似乎找不到一个相关的例子。
我正在尝试返回表的一个子集,对于该表中的每一行,我希望检查它有多少子元素,并将该数字作为结果集的一部分返回。
父表的列: PK_ID、Column1、Column2、FK1
对于结果集中的每个计数,从child_table中选择FK1 (*)。
最终结果集
3,col1text,col2text,1(子项)
5,col1texta,col2texta,2(子项)
6,col1textb,col2textb,0(子项)
9,col1textc,col2textc,4(子项)
我正在努力寻找在另一个查询中引用结果集中的列,然后再将它们连接在一起的最佳方法。使用T-sql
发布于 2009-01-26 02:06:23
我相信这就是你想要做的:
SELECT P.PK_ID, P.Column1, P.Column2, COUNT(C.PK_ID)
FROM
Parent P
LEFT JOIN Child C ON C.PK_ID = P.FK1
GROUP BY
P.PK_ID, P.Column1, P.Column2发布于 2010-09-03 13:50:03
你有没有尝试过为MySQL的父id添加一个索引。我非常确定执行时间会有很大改善。我还没有测试过,但我想说MySQL会遍历所有行来确定计数。这意味着它在这59秒内执行了100-400亿(表中的行数* 10000)的查找。
假设SQL Server和Oracle动态创建了一个索引。如果他们这样做了,那就只有100万到400万。
发布于 2010-02-02 14:17:25
您的查询都假定输入父子节点的顺序是连续的。如果在末尾输入来自第一个节点之一的子节点,并且其ID或PK较高,则查询不起作用。
https://stackoverflow.com/questions/478671
复制相似问题