说我有一张桌子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的条件。
希望我能清楚地表达我的问题 - 并感谢您提供任何帮助
答案 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