我有两个表格字段和内容表,看起来像这样(简化)。MySQL:按特定顺序显示每个组的第一个
fields
表
id name
1 Field One
2 Field Two
content
表
id field_id status content
1 1 draft xxx
2 1 published xxx
3 2 published xxx
唯一吸引人的是,相关的字段内容具有“草案”系统,该系统是独立于各个领域。
因此,我检索所有字段的草稿版本,它应该带来除字段外的所有草稿都没有草稿版本,在这种情况下它应该返回已发布的草稿。
(有更多的州,我只是用两个来保持简单)。所以,从示例表中检索时。结果应该是这样的:
id field_id status content
1 1 draft xxx
3 2 published xxx
东西会达到我要的是这个
SELECT * FROM contents c1 WHERE id IN (
SELECT id FROM contents c
WHERE (c.status = 'draft' OR c.status = 'published')
AND c.field_id = c1.field_id
ORDER BY FIELD(status, 'draft', 'published') LIMIT 1
);
随着该版本的MySQL我使用的唯一的问题(5.7.12)不似乎支持在IN
其中的限制。
该版本的MySQL还不支持 'LIMIT & IN/ALL/ANY/SOME 子查询'
是否要检索每个field_id的最新草稿(如果不存在,发布)? – GurV
这是正确的GurV –