尽管我无法获得所需的结果,但我正在尝试对子查询进行连接。有人可以建议运行更好的查询,或者我不应该使用子查询(我不精通 SQL 的任何变体),是否有更好的查询类型可以运行?
以我有限的 SQL 知识,我可以看到子查询不在最佳位置。这里的目标是从 tblResults 中查询字段,并将它们连接到tblTraceOutput 中具有相同值的最后一行(tblTraceOutputresultid
中有多行具有相同的resultid
值,所以只有最后一行)。
SELECT r.`resultid`, r.`successful`, r.`result`, r.`testdate`, r.`changed`,
t.`delay1`, t.`delay2`, t.`delay3`
FROM `tblResults` AS r
JOIN (
SELECT `resultid`, `delay1`, `delay2`, `delay3`
FROM `tblTraceOutput`
WHERE `traceid`='48'
ORDER BY `outputid` DESC LIMIT 0,1
) AS t ON (t.`resultid` = r.`resultid`)
WHERE r.`traceid` = '48' ORDER BY r.`resultid` DESC LIMIT 0,20
如果我将其更改JOIN
为 aLEFT JOIN
我将从我的查询中获得更多结果,但在除第一行之外的每一行中的三列t.delay1
中写入 'NULL't.delay2
和。从子查询中提取的结果仅与 tblResults 上主查询的第一行输出联合。我怎样才能让这个子查询为外部查询中的每一行输出运行和联合?t.delay3
在我的脑海中,我想象以下内容,但我无法以任何方式使其工作:
SELECT r.`resultid`, r.`successful`, r.`result`, r.`testdate`, r.`changed`
FROM `tblResults` AS r
(
SELECT t.`resultid`, t.`delay1`, t.`delay2`, t.`delay3`
FROM `tblTraceOutput`
WHERE `traceid`='48'
ORDER BY `outputid` DESC LIMIT 0,1
) AS t
JOIN ON (t.`resultid` = r.`resultid`)
WHERE r.`traceid` = '48' ORDER BY r.`resultid` DESC LIMIT 0,20