sql - SQL 查询 X 个不同的列值,所有行
问题描述
是否可以编写一个 SQL 查询,该查询将为我提供 X 个不同值的列,让我每行都保存该列值?
例如,假设我有以下 DocID 的行
1,
2,
3,
4,
5,
3
我想返回前 4 个不同的 DocID
因此我应该回去
1,
2,
3,
4,
3
我想要前 4 个不同的 DocID,在其中我得到包含每个 DocID 的每一行。
这样的查询可能吗?
编辑:这是为使用 MySQL 的客户准备的。此外,使用“order by”子句会导致数据库日志太大而导致错误。
谢谢
解决方案
这通常可以通过以下方式解决:
select t.*
from t
where t.docid in (select t2.docid
from t t2
group by t2.docid
order by t2.docid
fetch first 4 rows only
);
笔记:
- 您没有指定如何选择“前 4 名”。这是基于数字排序。
- 这使用
group by
而不是count distinct
,因此排序可以基于其他内容(例如行数或行时间)。 fetch first 4 rows only
是标准 SQL。一些数据库使用limit
ortop
代替。
推荐阅读
- python - 如何修复“[WinError 5] 访问被拒绝”
- tensorflow - 在 tf.keras.layers 中使用等同于 tf.nn.rnn_cell.DropoutWrapper 的 dropout 包装器
- c# - 如何在 C# 中向 Stimulsoft 发送查询?
- reactjs - React、Emotion 和 Jest 快照:错误:缺少属性“:”
- ios - 如何在所有屏幕尺寸上调整视图的大小?
- c# - 从 PeNet API 中的对象访问字段
- python - 使用字典替换文本数据
- c# - 在 Visual Studio (c#) 中使用 mciSendString 同时播放多个声音
- python - 在发送 http 请求时让 PyQt5 标签动态更新
- python - 如何对信息进行分块抓取?