我想要这样的事情:
SELECT DISTINCT ID from copies WHERE timestamp < 1229444506 ORDER BY CID
问题是这个只返回ID,我需要表中的CID和其他列。
由于其他原因,这可能是完全错误的,所以我将解释我需要的东西。
我有一张表“记录”我的维护中的每一行变化。这样,将来我将能够及时回顾主表如何看起来像某个特定日期。
所以我需要的是一个ORDER所有行BY CID,WHERE timestamp&lt; 1229444506,然后通过ID对它们进行DISCTINCT。
我希望查询按ID返回第一行,最先按CID排序。
我试过用不同的方法来解决这个问题,但没有运气。 有什么建议吗?
答案 0 :(得分:2)
我不确定我是否正确使用它,但是创建一个只选择列的子查询呢?你写了: “我希望查询按ID返回第一行,最先按CID排序。”
所以,让我们做一个子查询:
SELECT id, max(cid) as maxcid FROM copies WHERE timestamp < XX group by id
这将为您提供关系ID&lt; =&gt;你想要的CID。现在加入吧:
SELECT copies.* FROM copies, (SELECT id, max(cid) as maxcid FROM copies WHERE timestamp < xxx group by id) x
WHERE copies.id=x.id AND copies.cid=x.maxcid;
答案 1 :(得分:0)
SELECT * FROM copies WHERE timestamp < 1229444506 GROUP BY ID ORDER BY CID DESC;
修改强>:
SELECT * FROM copies WHERE timestamp < 1229444506 GROUP BY ID ORDER BY CID;
您也可以尝试:
SELECT * FROM copies WHERE timestamp < 1229444506 GROUP BY ID ASC ORDER BY CID;
或者:
SELECT * FROM copies WHERE timestamp < 1229444506 GROUP BY ID DESC ORDER BY CID;
有效吗?
答案 2 :(得分:0)
您的数据库如何知道要添加到不同列的哪些行?说你有ː
id | name
---+-----
1 | a
1 | b
现在假设的查询:SELECT DISTINCT id, name FROM table
。您期望在结果中显示哪个名称? a或b?
如果这不是问题,你可以通过id将结果分组到mysql中,但是未指定你将获得哪个名称
SELECT `id`, `name` FROM `copies` WHERE `timestamp` > 123456789 GROUP BY `id` ORDER BY `cid` DESC