我有两个用户之间的邮件存储的表称为注释和表的结构是这样的:集团消息通过最新回应
id | from_id | to_id | comment | date
我要查询的数据只显示的最新消息两方。 我以前见过它。
我正在使用MYSQL。
我有两个用户之间的邮件存储的表称为注释和表的结构是这样的:集团消息通过最新回应
id | from_id | to_id | comment | date
我要查询的数据只显示的最新消息两方。 我以前见过它。
我正在使用MYSQL。
比方说,两个用户的身份证号码是1
和2
。
SELECT comment
FROM COMMENTS
WHERE (from_id = 1 OR from_id = 2)
AND (to_id = 1 OR to_id = 2)
ORDER BY date DESC
LIMIT 1;
如果你真的想成为迂腐,你可以添加这个where子句:
AND NOT (from_id = to_id)
,以防止他们将消息发送给自己显示出来的情况。这假设用户甚至可以在系统中自己发送消息给他们。
对于用户1:
SELECT comment
FROM COMMENTS
WHERE (from_id = 2 AND to_id = 1)
ORDER BY date DESC
LIMIT 0,1;
对于用户2:
SELECT comment
FROM COMMENTS
WHERE (from_id = 1 AND to_id = 2)
ORDER BY date DESC
LIMIT 0,1;
的“where”子句需要确保该消息被从双方之一发送到另一方,副相反,并且只显示给该用户的消息。
如果需要从任何两个显示最新的消息,这两个用户,那么:
SELECT comment
FROM COMMENTS
WHERE (from_id = 1 OR from_id = 2)
ORDER BY date DESC
LIMIT 0,1;
是否可以选择仅由一个用户关联的所有最新消息,并按收到或发送的最后一个消息进行分组。例如Google电子邮件。 – numerical25 2012-01-17 01:11:21
是的,只需删除“LIMIT 0,1”位,并通过您需要应用的任何用户过滤器进行过滤。 – ShaunOReilly 2012-01-17 01:32:42
变化'TOP 1'为'LIMIT 1'为MySQL。 – 2012-01-17 00:47:08
@ypercube好点。我也忘了分号。该死的MS SQL Server腐烂我的大脑。 – 2012-01-17 00:49:51
如果我想查询所有关联的注释,只有1个ID不一定是两个,我该怎么办?并通过每个组的最新消息进行分组? – numerical25 2012-01-17 00:50:42