一般来说,我对 sql 的经验并不丰富,我正在尝试完成一项非常具体的任务——我想首先运行一个查询以获取我所有命中次数最多的单元的 ID,然后从该运行中获取再次获取特定时间段内这些 ID 的所有命中类型的消息和计数。对于第一个查询,我有这个:
SELECT entity, count(entity) as Count
from plugin_status_alerts
where entered BETWEEN now() - INTERVAL '14 days' AND now()
group by entity
order by count(entity) DESC
limit 10
这导致了这个回报:
"38792";3
"39416";2
"37796";2
"39145";2
"37713";2
"37360";2
"37724";2
"39152";2
"39937";2
"39667";2
这个想法是然后使用该结果集来运行另一个按实体和状态码排序的查询。我试过这样的事情:
SELECT status_code, entity, COUNT(status_code) statusCount
FROM plugin_status_alerts
where updated BETWEEN now() - INTERVAL '14 days' AND now() AND entity IN
(SELECT id.entity, count(id.entity) as Count
from plugin_status_alerts id
where id.updated BETWEEN now() - INTERVAL '14 days' AND now()
group by id.entity
order by count(id.entity) DESC
limit 10
)
GROUP BY status_code, entity
但我得到了错误
ERROR: subquery has too many columns
我不确定这是否是我应该走的路线,或者我是否应该尝试自我加入 - 无论哪种方式都不确定如何纠正现在发生的事情。