Sql - 获取行数量并选择某个行ID并获取以下行

时间:2014-04-08 11:58:14

标签: php mysql sql sql-server

说我有一张桌子chattable

  id           sender           touser         message
----------------------------------------------------
1            User1            User2           Hi
2            User2            User1           Hello
3            User3            User1           How r u
4            User1            User3           r u there?
5            User1            User2           Hey

我想做以下

1)获取具有相同值的行数。

例如 - 我想从chattable中选择将User1作为发件人,将User2作为发件人的行数。在这个例子中,那将是2。

据我所知,为了选择那些行,我应该选择下一行代码 -

SELECT sender, touser FROM chattable WHERE sender=User1, touser=User2;

但是如何获得包含此信息的行数?

2)我试图理解的另一件事是如何从某一行获取行数据,以及如何形成具有相同值的后续行。

意思是,我想使用下一个代码 - 获取行id的最大值 -

SELECT sender, touser FROM chattable WHERE sender=User1, touser=User2, id=( SELECT max(id) FROM chattable );

我应该为了获得最大ID号而对其进行舍入 - 在我的示例中,它应该是行ID 5,而不是因为它是整个表中的最后一行,只是因为它是最后一行,User1的值为发件人,User2为touser。

现在让我们说我已经获得了最大id值为5。

现在让我们说桌子上有新行 -

  id           sender           touser         message
----------------------------------------------------
6            User3            User2           Hi There
7            User1            User2           Hi There
8            User1            User2           Hello to u 2
9            User3            User1           How r u

现在我想知道是否有一个具有相同条件的新行 - User1作为发送者,User2作为touser。

所以,让我们说我获得了新的最大ID值 - 现在是8。

但我不仅要获得第8行的信息,还要获得7的信息。

那么sql行应该是什么,以获得比第5行更大的所有行,但也具有User1作为发送者和User2作为touser的条件。

希望我能清楚地表达我的问题 - 并感谢您提供任何帮助

4 个答案:

答案 0 :(得分:1)

对于第一个问题,您可以拥有包含count的行数:

SELECT COUNT(*) FROM chattable WHERE sender=User1, touser=User2;

第二点:

SELECT MAX(Id) AS HighestID FROM chattable WHERE sender=User1, touser=User2;

答案 1 :(得分:0)

你得到的总行数

SELECT COUNT(*) FROM chattable WHERE sender="User1" AND touser="User2";

另一个问题

SELECT id, sender, touser FROM chattable WHERE sender="User1" AND touser="User2" ORDER BY id DESC LIMIT 1;

答案 2 :(得分:0)

1)

SELECT sender, touser, count(*) 
FROM chattable 
WHERE sender=User1, touser=User2;

2)

SELECT sender, touser, max(id) as latest_id 
FROM chattable 
WHERE sender=User1, touser=User2

答案 3 :(得分:-2)

1)您可以使用COUNT(*)

e.g。

SELECT count(*) FROM chattable WHERE sender=User1, touser=User2;

2)你可以这样做,使用限制:

SELECT id, sender, touser, message FROM chattable WHERE sender=User1, touser=User2 ORDER BY id DESC LIMIT 1

或者这样,使用MAX()(应该更快)

SELECT MAX(id), sender, touser, message FROM chattable WHERE sender=User1, touser=User2