首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将这两条SQL语句合并为一条语句?

问是否可以将这两条SQL语句合并为一条语句?
EN

Stack Overflow用户
提问于 2015-11-24 02:48:05
回答 3查看 54关注 0票数 1

我使用这两个MySQL语句来获取两个用户之间的所有消息,但是在代码后面处理数据时遇到了一个很大的问题,因为它不是按ID排序的。有没有办法组合这两个语句并按ID对结果排序?

代码语言:javascript
复制
$sql = "SELECT * FROM messages WHERE sender='" . $username . "' AND receiver='" . $chatPartner . "'"

$sqlTwo = "SELECT * FROM messages WHERE sender='" . $chatPartner . "' AND receiver='" . $username . "'"

从本质上讲,我需要两个人之间的每一条消息,但按ID排序。

EN

回答 3

Stack Overflow用户

发布于 2015-11-24 02:51:31

代码语言:javascript
复制
SELECT * FROM messages 
WHERE (sender='" . $username . "' AND receiver='" . $chatPartner . "'")
OR (sender='" . $chatPartner . "' AND receiver='" . $username . "'")
ORDER BY id DESC
票数 4
EN

Stack Overflow用户

发布于 2015-11-24 02:53:53

将两个查询合并为一个查询如何?

代码语言:javascript
复制
$sql = "SELECT * FROM messages WHERE (sender=" . $username . " OR sender =". $chatPartner .") AND (receiver=" . $chatPartner . " OR receiver=" . $username .") ORDER BY id"
票数 0
EN

Stack Overflow用户

发布于 2015-11-24 03:13:26

您还可以使用row constructors编写@dtj答案的较短版本。

代码语言:javascript
复制
SELECT *
FROM messages
WHERE (sender, receiver) IN (($username, $chatPartner),($chatPartner, $username))
ORDER BY id DESC

在我看来,它在代码中看起来更好一些,并使其更具可读性,但请记住,它不会提高执行性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33878341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档