【发布时间】:2013-05-21 09:31:17
【问题描述】:
我会用什么类型的sql查询来转下面的;
| ID | SERIAL | LCN | INITLCN |
|------|----------|-------|---------|
| 1 | A | A1 | |
| 2 | B | A2 | |
| 3 | C | A3 | A1 |
| 4 | D | A4 | A2 |
| 5 | E | A5 | A1 |
|------|----------|-------|---------|
变成类似这样的结果;
| ID | COUNT |
|------|---------|
| 1 | 2 |
| 2 | 1 |
|------|---------|
使用我的低 SQL 技能,我设法编写了以下查询,但是它非常慢;
select
a.id,
count (b.id) as parent
from assets a
left join assets b
ON (a.lcn = b.initlcn)
group by a.id
order by a.id;
【问题讨论】:
-
由于
and存在,该查询甚至不应该运行 -
首先使用 INNER JOIN,它只会返回匹配的结果,还会索引连接列,最后确保它们是 TEXT 或大 VARCHARS,尝试使用 ids
-
and已删除。标题已更新以反映实际问题。 -
@We0 -
INNER JOIN将执行时间从 ~28s 减少到 ~1s。谢谢!