2

我在测试输出数据库中有 2 个表,我们将需求连接到已执行的测试用例。这些表如下所示:

mysql> select * from SSS_Req;
+-----+------+
| ID  | Req  |
+-----+------+
|   2 | 1122 |
|   3 | 1208 |
|   4 | 2525 |
+-----+------+
3 rows in set (0.00 sec)

mysql> select * from log_item;
+----+------+---------+-------------------------+
| ID | Req  | Status  | DateTime                |
+----+------+---------+-------------------------+
| 32 | 2525 | SUCCESS | 2012-10-09 18:24:54.375 |
| 33 | 1122 | FAIL    | 2012-10-09 18:24:54.390 |
| 65 | 2525 | SUCCESS | 2012-10-09 18:44:40.625 |
+----+------+---------+-------------------------+
3 rows in set (0.00 sec)

我想获得一个表格,其中包含自上次执行以来按时间排序的所有需求(降序),包括甚至未执行的需求(最好是列表中的第一个)。这是为了帮助我们获得 A. 未测试,B. 长时间未测试的需求列表。

因此,鉴于上面的信息,我想得到一个类似于这样的输出:

+------+-------------------------+
| SSS  | DateTime                |
+------+-------------------------+
| 1208 | NULL                    |
| 1122 | 2012-10-09 18:24:54.390 |
| 2525 | 2012-10-09 18:44:40.625 |
+------+-------------------------+

最好的问候安德烈亚斯

4

2 回答 2

2
SELECT  a.Req SSS,
        MAX(b.datetime) DateTime
FROM    SSS_req a
        LEFT JOIN Log_Item b
            ON a.req = b.req
GROUP   BY a.Req

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-04-29T13:22:31.077 回答
1

你需要一个left outer join来获得所有的reqs。然后 agroup by获取最后的日志时间:

select r.req as SSS, MAX(datetime)
from sss_req r left outer join
     log_item li
     on r.req = li.req
group by r.req
于 2013-04-29T13:24:54.380 回答