gpt4 book ai didi

MySQL 加入子查询

转载 作者:行者123 更新时间:2023-11-29 04:48:15 25 4
gpt4 key购买 nike

虽然我无法获得所需的结果,但我正在尝试对子查询进行连接。有人可以建议运行更好的查询,或者我不应该使用子查询(我不精通 SQL 的任何变体),是否有更好的查询类型可以运行?

以我有限的 SQL 知识,我可以看出子查询不在最佳位置。这里的目标是查询来自 tblResults 的字段,并将它们连接到 tblTraceOutput 中具有相同 resultid 的最后一行(tblTraceOutput 中有多行具有相同的 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 更改为 LEFT JOIN,我将从查询中获得更多结果,但在 t 的三列中写入“NULL” .delay1t.delay2t.delay3除了第一行之外的每一行。从子查询中提取的结果仅与 tblResults 上主查询输出的第一行联合。 如何让这个子查询运行并联合外部查询中的每一行输出?

在我的脑海中,我想象了以下内容,但我无法以任何方式实现它:

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

最佳答案

SELECT r.`resultid`, r.`successful`, r.`result`, r.`testdate`, r.`changed` 
FROM `tblResults` AS r
LEFT JOIN `tblTraceOutput` as t ON (t.`resultid` = r.`resultid`)
WHERE r.`traceid` = '48' ORDER BY r.`resultid` DESC LIMIT 0,20

左连接将从 tblTraceOutput 表返回结果,即使没有匹配的结果(返回数据为 NULL)

inner join 只会返回匹配 ON 子句的 resultid 和 tblTraceOutput 的结果

关于MySQL 加入子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15367824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com