mysql之按有限数量的不同值进行选择

哈哈 阅读:100 2024-12-31 21:38:35 评论:0

我正在尝试按一列的不同值对选择进行分 block 。就像给我前五个不同值的所有行一样。或者给我一列接下来五个不同值的所有行。

我有一个像这样的表格 VBS_DOCUMENT:

PK    T_DOCUMENT 
1     1 
2     1 
3     1 
4     3 
5     3 
6     3 
7     5 
8     5 
9     6 
10    7 
SELECT * FROM VBT_DOCUMENT  
WHERE T_DOCUMENT IN (SELECT DISTINCT T_DOCUMENT FROM VBT_DOCUMENT LIMIT 2 OFFSET 2); 

但是我得到了这个错误:

1235 - This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

PK    T_DOCUMENT 
7     5 
8     5 
9     6 

请您参考如下方法:

在 FROM 子句中使用您的子查询并将其与基表连接:

SELECT t.* 
FROM ( 
  SELECT DISTINCT T_DOCUMENT  
  FROM VBT_DOCUMENT 
  ORDER BY T_DOCUMENT 
  LIMIT 2 OFFSET 2 
) x 
JOIN VBT_DOCUMENT t on t.T_DOCUMENT = x.T_DOCUMENT 

结果:

| PK  | T_DOCUMENT | 
| --- | ---------- | 
| 7   | 5          | 
| 8   | 5          | 
| 9   | 6          | 

View on DB Fiddle

注意:当您使用 LIMIT 时,您还应该定义一个确定性的 ORDER BY 子句。否则,根据执行计划,您可能会得到意想不到的结果。


标签:mysql
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号