从mysql获取未复制的消息

6l7fqoea  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(289)

我在mysql中有一个表,它的结构不正确。它是由以前的开发者开发的。中的表结构below:-

id (primary_key)
from_user_id (sender)
post_id (thread_id)
to_user_id (receiver)
Message (text_content)
datetime (mysql_timestamp)

假设我们的内部用户id(来自用户id)存在于预定义的数组中,即(4182193)。
因此,我只想得到上面数组中不存在的那些由用户最后回复的行。
我做了一个查询,但只返回一行。
你们能帮我一下吗?
我的问题是:-

SELECT * 
from table 
WHERE id IN (
  SELECT MAX(id) 
  FROM table 
  where from_user_id not in (4,182,193)
)
GROUP BY post_id;
dfty9e19

dfty9e191#

对于get all the id not in your array,您应该选择所有id,而不仅仅是max和use where id not in .. 我也是。
要进行比较,需要一个列名

SELECT * 
    from table 
    WHERE id IN (
      SELECT id
      FROM table 
      where from_user_id where id  not in (4,182,193)
    )
des4xlb0

des4xlb02#

为任何帖子选择最后一个id,然后将生成的id用作筛选器:

select *
from table t1
where from_user_id not in (4,182,193)
  and id in
(
select max(t2.id)
from table t2
group by t2.post_id
)

相关问题