[英]Is it possible to combine these two SQL statements into one?
我正在使用这两个MySQL语句来获取两个用户之间的所有消息,但是稍后在代码中处理数据时遇到了一个很大的问题,因为它不是按ID顺序排列的。 有什么方法可以组合这些语句并按ID排序结果?
$sql = "SELECT * FROM messages WHERE sender='" . $username . "' AND receiver='" . $chatPartner . "'"
$sqlTwo = "SELECT * FROM messages WHERE sender='" . $chatPartner . "' AND receiver='" . $username . "'"
从本质上讲,我需要两个人之间每次出现一条消息,但都按ID排序。 截至目前,我正在加入数组以获取我的完整列表,但这并不是按ID排序。
SELECT * FROM messages
WHERE (sender='" . $username . "' AND receiver='" . $chatPartner . "'")
OR (sender='" . $chatPartner . "' AND receiver='" . $username . "'")
ORDER BY id DESC
将两者合并为1个查询怎么样?
$sql = "SELECT * FROM messages WHERE (sender=" . $username . " OR sender =". $chatPartner .") AND (receiver=" . $chatPartner . " OR receiver=" . $username .") ORDER BY id"
您还可以使用行构造函数编写@dtj答案的较短版本。
SELECT *
FROM messages
WHERE (sender, receiver) IN (($username, $chatPartner),($chatPartner, $username))
ORDER BY id DESC
在我看来,它在代码中看起来更好一些,并使其更具可读性,但是请记住,它并不能提高执行性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.