0

我正在尝试实现一个消息传递系统,但略有不同。消息只能从用户 2 开始发送到用户 1。此开始消息的 start = 1 值。

+---------+----------+----------+-----------+----- -----+-------+---------------------+
| id (ai) | user1id  | user2id  | originated| to_user2  | start | messag              | 
+---------+----------+----------+-----------+-----------+-------+---------------------+
| 1       |  1       | 2        |  1234     |    0      |   1   | Hi                  | 
| 2       |  1       | 2        |  1234     |    1      |   0   | Hi back             | 
| 3       |  1       | 2        |  1234     |    0      |   0   | So Whats up         | 
| 4       |  1       | 2        |  1234     |    1      |   0   | Nothing much, why   | 
| 5       |  1       | 2        |  1234     |    0      |   0   | Just checking       | 
| 6       |  1       | 2        |  1234     |    1      |   0   | OK                  | 
+---------+----------+----------+-----------+-----------+-------+---------------------+

所以我可以通过执行 WHERE start = '1' 来获取起始消息。

我可以通过 WHERE to_user2 = '1' 获取从 user1 到 user2 的消息

我可以通过执行 WHERE to_user2 = '0' 和 start='0' 来获取从 user2 到 user1 的消息

正确的?跟着我?

我将如何进行查询,以便获得以下输出:

STARTING MESSAGE  (id 1)
 message to user2  (id 2)          

              message to user 1  (id3)
              message to user 2  (id4)

                      message to user 1  (id5)
                      message to user 2  (id6)

我希望我能说得通。

让我澄清一下,我能够使用 6 个不同的查询获得此输出,但我想知道这是否是要走的路,以及它是否可能在 1 个查询中。

4

1 回答 1

0
SELECT * 
FROM   table
WHERE  user2_id = some_id 
   AND (start = 1  OR to_user2 = 1 OR (to_user2 = 0 AND start = 0))
于 2013-06-16T11:41:59.213 回答