留言讨论查询
Message discussion query
我尝试创建一个讨论系统,显示两个用户之间按时间排序的消息 喜欢图像 使用 SQL,例如,如果用户 10 想看他的与用户 45 的消息,这是我的 table 结构:
消息( id(PK), sender_id(FK_USER), receiver_id(FK_USER), 主题, 内容,created_at,updated_at);
我尝试了这个 sql 查询,但它没有显示我想要的内容:
select s.id,
s.subjet,
d.source_id as `source`,
d.id,
d.subject
from messages s,
messages d
where s.destination_id=d.source_id
and d.source_id=s.destination_id
and s.source_id=202
order by created_at asc;
如果我正确理解了您的 table 结构和要求,您可以尝试以下操作 -
SELECT *
FROM MESSAGES
WHERE SENDER_ID IN (10, 45)
AND RECEIVER_ID IN (10, 45)
ORDER BY CREATED_AT
或者像这样-
SELECT *
FROM MESSAGES
WHERE (SENDER_ID = 10 AND RECEIVER_ID = 45)
OR (RECEIVER_ID = 10 AND SENDER_ID = 45)
ORDER BY CREATED_AT
默认情况下,排序将以 ASC 方式完成,因此无需提及。
我认为您需要一个 select 案例(我已将所有专栏留作演示)
select s.id,
case s.sender_id when 202 then s.subject else '' end,
case s.receicer_id when 202 then s.subject else '' end,
s.subject, s.content, s.created_at
from message s
where s.sender_id = 202
order by s.created_at ASC
我尝试创建一个讨论系统,显示两个用户之间按时间排序的消息 喜欢图像 使用 SQL,例如,如果用户 10 想看他的与用户 45 的消息,这是我的 table 结构:
消息( id(PK), sender_id(FK_USER), receiver_id(FK_USER), 主题, 内容,created_at,updated_at);
我尝试了这个 sql 查询,但它没有显示我想要的内容:
select s.id,
s.subjet,
d.source_id as `source`,
d.id,
d.subject
from messages s,
messages d
where s.destination_id=d.source_id
and d.source_id=s.destination_id
and s.source_id=202
order by created_at asc;
如果我正确理解了您的 table 结构和要求,您可以尝试以下操作 -
SELECT *
FROM MESSAGES
WHERE SENDER_ID IN (10, 45)
AND RECEIVER_ID IN (10, 45)
ORDER BY CREATED_AT
或者像这样-
SELECT *
FROM MESSAGES
WHERE (SENDER_ID = 10 AND RECEIVER_ID = 45)
OR (RECEIVER_ID = 10 AND SENDER_ID = 45)
ORDER BY CREATED_AT
默认情况下,排序将以 ASC 方式完成,因此无需提及。
我认为您需要一个 select 案例(我已将所有专栏留作演示)
select s.id,
case s.sender_id when 202 then s.subject else '' end,
case s.receicer_id when 202 then s.subject else '' end,
s.subject, s.content, s.created_at
from message s
where s.sender_id = 202
order by s.created_at ASC