我有一个具有以下列和值的模型Teststep:
+----------+----------+---------------+----------+
| name | sequence | inner_sequnce | revision |
+----------+----------+---------------+----------+
| Step A | 1 | 1 | 1 |
| Step B | 1 | 2 | 1 |
| Step B-2 | 1 | 2 | 2 |
| Step C | 1 | 3 | 1 |
| Step D | 2 | 1 | 1 |
+----------+----------+---------------+----------+现在,我希望使用sequence 1进行所有测试步骤,但只需要最高的修订版。因此,在这种情况下,它将包括Step A、Step B-2和Step C。
使用正确的sequence获取测试步骤的查询很简单:
Teststep.where(sequence: 1)
但是,如何确保只返回Step B-2,而不返回Step B或Step B-2和Step B
发布于 2017-11-07 13:56:48
您希望创建子查询并使用聚合:
SELECT * FROM teststeps
WHERE
teststeps.sequence = 1
AND
teststeps.revision = (SELECT MAX(teststeps.revision) WHERE teststeps.sequence = 1)坏消息是,如何做到这一点的具体细节取决于所使用的RDBMS。
在Rails中,您可以执行如下操作:
Teststep.where(sequence: 1)
.where(revision: Teststep.where(sequence: 1).maximum(:revision))https://stackoverflow.com/questions/47159255
复制相似问题