我使用这两个MySQL语句来获取两个用户之间的所有消息,但是在代码后面处理数据时遇到了一个很大的问题,因为它不是按ID排序的。有没有办法组合这两个语句并按ID对结果排序?
$sql = "SELECT * FROM messages WHERE sender='" . $username . "' AND receiver='" . $chatPartner . "'"
$sqlTwo = "SELECT * FROM messages WHERE sender='" . $chatPartner . "' AND receiver='" . $username . "'"从本质上讲,我需要两个人之间的每一条消息,但按ID排序。
发布于 2015-11-24 02:51:31
SELECT * FROM messages
WHERE (sender='" . $username . "' AND receiver='" . $chatPartner . "'")
OR (sender='" . $chatPartner . "' AND receiver='" . $username . "'")
ORDER BY id DESC发布于 2015-11-24 02:53:53
将两个查询合并为一个查询如何?
$sql = "SELECT * FROM messages WHERE (sender=" . $username . " OR sender =". $chatPartner .") AND (receiver=" . $chatPartner . " OR receiver=" . $username .") ORDER BY id"发布于 2015-11-24 03:13:26
您还可以使用row constructors编写@dtj答案的较短版本。
SELECT *
FROM messages
WHERE (sender, receiver) IN (($username, $chatPartner),($chatPartner, $username))
ORDER BY id DESC在我看来,它在代码中看起来更好一些,并使其更具可读性,但请记住,它不会提高执行性能。
https://stackoverflow.com/questions/33878341
复制相似问题