我已经用 mysql(和 php)实现了版本控制。
它如下所示:
categories
-------------
| id | name |
|----|-------
| 1 | a
| 2 | b
| 3 | c
| 4 | d
-------------
revisions
----------------------
| id | cid | current |
|----|-----|----------
| 1 | 1 | 1 |
| 2 | 1 | NULL |
| 3 | 2 | NULL |
| 4 | 3 | 1 |
| 5 | 4 | NULL |
| 6 | 4 | 1 |
----------------------
每个类别都有分配给它的多个修订。如果“当前”设置为 1,则设置一个修订版(每个类别只有一个修订版可以为 1,所有其他版本为 NULL)。我现在想要的是获得每个类别,其中有新的修订(注意,一旦提交修订,它不会立即设置为当前。这是由例如主持人完成的)。我的问题现在也得到了每个类别,它只有一个当前 IS NULL 的修订
因此,预期的结果将是:
-------------
| category.id
|------------
| 1
| 2
-------------
祝一切顺利
编辑://
我目前的解决方案是:
SELECT categories.* FROM categories
JOIN revisions as t1 ON
(
t1.cid = categories.id
t1.current IS NULL
)
JOIN revisions as t2 ON
(
t2.id != t1.id
t2.current IS NOT NULL
t2.cid = categories.id
)
WHERE t1.id > t2.id