sql - Oracle SQL:如何从组中查找记录
问题描述
我有一个表,其中有一个 PrimaryKey,Foreign Key。我只想找到每个外键的一个主列表。例子
我需要一个只返回主键(1 或 2 或 3)和(4 或 5)或(6 或 7 或 8)的查询,基本上是 1,4 和 6。我怎样才能为每个外键获得一个 PK
解决方案
使用聚合:
select foreignKey, min(primaryKey)
from t
group by foreignKey;
如果你想要一个随机值,你可以使用以下keep
语法:
select foreignKey,
min(primaryKey) keep (dense_rank first order by dbms_random.random)
from t
group by foreignKey;
如果你有很多列,你可以使用row_number()
或相关的子查询:
select t.*
from t
where t.primarykey = (select min(t2.primarykey) from t t2 where t2.foreignkey = t.foreignkey);
推荐阅读
- azure - Azure Kusto 查询输出格式
- linker - Visual Studion 2019 中的 LNK 2038 和 LNK 2001 问题
- html - 在 css 媒体查询中将照片和内容堆叠在一起
- python - 无法在 JIRA 和 Python 之间建立连接
- archive - 以编程方式归档当前从 Safari Web 扩展在 Safari 中打开的页面(Chrome 中 chrome.pageCapture API 的替代方案)
- c# - 从多部分/表单数据内容的 ASP.NET Core HttpContext.Request 读取 excel 文件?
- apache - Apache 服务器和 Payara 服务器会话在每次通过域名向网页发出请求后重新创建
- javascript - 开源 React App 在 npm install 和 npm start 后编译失败
- python - 如何在没有 os 的情况下访问环境变量值?
- html - 制作 Bootstrap (4.4.1) 卡片周围环绕着正文文本