此查询返回我需要的数据,给定一个特定的 traceid
值(在本例中为 50,这是存在于两个表 tblResults
和 中的键tblTraces
:
SELECT count(changed)
FROM (
SELECT changed
FROM tblResults
WHERE traceid = 50
AND changed = 1
ORDER BY resultid DESC
LIMIT 0,20
) as R
我想对几乎每个 traceid
运行上述查询(因此,为每个 traceid 选择 20 行,而不仅仅是 traceid 50,所以 3 个 traceid 意味着 60 行).下面这个简单的选择获取所需的 traceid
值:
SELECT `traceid` FROM `tblTraces` WHERE `enabled` = 1
如何将两个查询“粘合”在一起?
所以我想象一个像下面这样的查询,除了它不会工作,因为子查询返回多行(我想要的):
SELECT count(changed)
FROM (
SELECT changed
FROM tblResults
WHERE traceid = (
SELECT `traceid` FROM `tblTraces` WHERE `enabled` = 1
)
AND changed = 1
ORDER BY resultid DESC
LIMIT 0,20
) as R
最佳答案
虽然我对这个答案不满意,但对于较小的表来说它可能是最简单的:
SELECT tblTraces.traceid, LEAST(20, SUM(tblResults.changed))
FROM tblTraces
LEFT JOIN tblResults
ON tblTraces.traceid = tblResults.traceid
WHERE tblTraces.enabled = 1
AND tblResults.traceid.changed = 1
GROUP BY tblTraces.traceid
列的限制确实使连接变得复杂。
关于MySQL - 将这两个查询与连接或子查询连接在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15591606/