我尝试创建一个讨论系统,在两个用户之间按时间按照图像使用SQL显示消息,例如,如果用户10希望用户45看到他的消息,这是我的表结构:
消息(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;
答案 0 :(得分:1)
如果我正确理解您的表格结构和要求,您可以尝试以下内容 -
SELECT name, columnA + columnB AS price
FROM house
WHERE NOT (columnA IS NULL OR columnB IS NULL)
GROUP BY name, columnA
ORDER BY price
或者像这样 -
SELECT *
FROM MESSAGES
WHERE SENDER_ID IN (10, 45)
AND RECEIVER_ID IN (10, 45)
ORDER BY CREATED_AT
默认情况下,订购将以ASC方式完成,因此无需提及。
答案 1 :(得分:1)
我认为你需要一个精选案例(我已经为演示留下了所有专栏)
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