mysql - 如果将第一行和最后一行按特定 ID 分组,如何排除第一行和最后一行

标签 mysql

我有这样的数据示例表

id uniqueid values
1   6          0
2   6          1
3   6          2
4   6          0
5   6          1

I want result like this

id uniqueid values
2   6          1
3   6          2
4   6          0

I tried like this

select id,uniqueid,values
FROM t1
WHERE 
 id not in(SELECT concat(MAX(message_id_pk),',',min(message_id_pk)) FROM t1
  where uniqueid=6)
  and `uniqueid`=6
 GROUP BY uniqueid

但它不起作用

最佳答案

您可以通过自连接获得所需的结果,内部查询将获取每个组的最大和最小 ID,外部查询将使用 minidmaxid 过滤掉结果

select a.*
from demo a
join (
  select `uniqueid`,min(id) minid, max(id) maxid
  from demo
  where uniqueid=6
  group by `uniqueid`
) b using(`uniqueid`)
where a.id > b.minid and a.id < b.maxid /* a.id <> b.minid and a.id <> b.maxid  */

Demo

关于mysql - 如果将第一行和最后一行按特定 ID 分组,如何排除第一行和最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47095991/

相关文章:

mysql 工作台将 nvarchar 列转换为 varchar?

mysql - 如何检查哪个表具有ID并查询其行

MySQL 查询 WHERE NOT EQUAL 不起作用

mysql - 未定义偏移

php - mysql 一个字段按不同的优先级排序

php - 选择数据库中条目最多的类别

mysql连接两个表的限制

mysql - 如何按列值的计数计算百分比

php - 即使在使用 mysqli_real_escape_string 之后,数据库也不允许特殊字符

mysql - 使用asp.net core查询Mysql数据库