在 JPA 上选择 DISTINCT

2024-02-03

我有一张桌子ISO 4217 值 https://en.wikipedia.org/wiki/ISO_4217货币(有 6 行、ID、国家/地区、货币名称、字母代码、数字代码、次要单位)。

我需要获取一些数据4种最常用的货币 https://en.wikipedia.org/wiki/Template:Most_traded_currencies,我的“纯”SQL 查询如下:

select distinct currency_name, alphabetic_code, numeric_code 
from currency 
where ALPHABETIC_CODE IN ('USD','EUR','JPY','GBP') 
order by currency_name;

它返回一个包含我需要的数据的 4 行表。到目前为止,一切都很好。

现在我必须将其转换为我们的 JPA xml 文件,问题就开始了。我试图得到的查询是这样的:

SELECT DISTINCT c.currencyName, c.alphabeticCode, c.numericCode
FROM Currency c 
WHERE c.alphabeticCode IN ('EUR','GBP','USD','JPY') 
ORDER BY c.currencyName

这将返回一个列表,其中包含具有其中一些货币的每个国家/地区的一行(就好像查询中没有“DISTINCT”一样)。我很困惑为什么。所以问题是:

1)我怎样才能让这个查询返回“纯”SQL 给我的结果?

2)为什么这个查询似乎忽略了我的“DISTINCT”子句?我在这里缺少一些东西,但我不明白是什么。发生了什么事,我没有得到什么?

编辑:嗯,这变得越来越奇怪了。不知何故,该 JPA 查询按预期工作(返回 4 行)。我已经尝试过这个(因为我需要更多信息):

SELECT DISTINCT c.currencyName, c.alphabeticCode, c.numericCode, c.minorUnit, c.id
FROM Currency c 
WHERE c.alphabeticCode IN ('EUR','GBP','USD','JPY') 
ORDER BY c.currencyName

看起来 ID 搞乱了一切,因为从查询中删除它会返回 4 行表。而且加括号是没用的。

顺便说一句,我们正在使用 eclipse 链接。


您遇到的问题是当您尝试检索列列表时(c.currencyName, c.alphabeticCode, c.numericCode, c.minorUnit, c.id) the

  • unique 在 select 子句中提到的整个列上运行

我相信“id”列对于数据库表中的每条记录都是唯一的,因此您有可能在其他列中获得重复项(c.currencyName, c.alphabeticCode, c.numericCode, c.minorUnit).

因此,在您的情况下,DISTINCT 是在整行上运行,而不是在 具体栏目。如果您想获得唯一的名称,请仅选择该名称 柱子。

如果您想在多个列上运行不同的操作,您可以执行类似的操作,例如使用 GROUP BY 来意图查找使用c.currencyName, c.alphabeticCode

SELECT DISTINCT c.currencyName, c.alphabeticCode, c.numericCode,c.id
FROM Currency c 
WHERE c.alphabeticCode IN ('EUR','GBP','USD','JPY') GROUP BY c.currencyName, c.alphabeticCode
ORDER BY c.currencyName
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JPA 上选择 DISTINCT 的相关文章

随机推荐

  • android 部分索引器教程?

    如何为带有字符串数组的列表视图创建分类部分索引器 我看过字母索引器的示例 但它是如何实现类别的 例如第一节 第二节 第三节 根据您的需要将其自定义为适配器 并将其设置为列表视图 仅此而已 取自here http alluscodebook
  • 我可以在 AWS 帐户之间共享 ACM SSL 证书吗?

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有几个 AWS 账户 用于管理 DNS 地址和 ACM SSL 证书 我的一个帐户中有一个 top level com 域 另一个帐户管
  • 与使用“普通”PHP 相比,使用 CodeIgniter 或 CakePHP 等框架有什么优势? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是 PHP 新手 在明天某个时候开始学习代码之前 我将尝试进行更多概述 与使用 普通 PHP 相比 使用 CodeIgniter C
  • 在javascript中从java servlet读取数组

    你好 就像标题所说的 我正在尝试从我的 java Servlet 中读取一个数组 我正在尝试读取 java 脚本文件中的数组 Java servlet 代码 String graphData dbHandler select attribu
  • 错误膨胀类片段类未找到 android.view.fragment 但我包括兼容性库?

    尽管我使用的是兼容性库 但我看到 android view fragment 未找到类异常 编译正常但崩溃 3 0 之前的版本中我应该使用另一个软件包吗 我已经将所有片段类更改为 android support v4 app Frament
  • 使用 Lodash 按值对对象数组进行排序

    我正在尝试按 名称 值对数组进行排序 使用 Lodash 我使用 Lodash 文档创建了下面的解决方案 但是 orderBy 似乎根本没有任何影响 任何人都可以阐明对数组进行排序的正确方法吗 字符数组 id 25 name Anakin
  • 如何合并 2 个 javascript 对象,如果另一个对象中不存在属性,则填充一个对象中的属性?

    如果我有一个 javascript 对象 assoc 数组定义如下 function somefunction options var defaults prop1 foo prop2 bar Do stuff here 我想使用它作为该函
  • 如何使用pickle保存sklearn模型

    我想使用 Pickle 转储并加载我的 Sklearn 训练模型 怎么做 Save import pickle with open model pkl wb as f pickle dump model f Load with open m
  • NSTableView 左上角的奇怪矩形(NSBannerView)

    我正在开发 macOS 应用程序 但遇到了一个奇怪的问题 在我的 NSTableView 的左上角 标题上方 显示一个灰色矩形 我在 NSTableView 后面添加了一个 NSBox 以便在屏幕截图中更清晰 通过调试视图层次结构 我看到它
  • 页面重新加载后显示附加图像

    我正在将图像附加到页面中 还有一个复选框可以查看附加项目和隐藏附加项目 我将数据保存在 JSON 数组中 即使在重新加载选项卡后 我也想显示这些附加图像 当您通过 JavaScript 对 DOM 进行动态更改时 它们不是持久的 如果你想做
  • 使 Azure DocumentDB 不返回服务字段

    我在节点应用程序中为 Azure DocumentDB 使用类似 SQL 的语法 这是方法代码 client queryDocuments collection self SELECT FROM root toArray function
  • 在数据库中存储不同图像的最佳方式是什么?

    为不同目的存储图像的最佳方法 关于数据库设计 是什么 我有一堆用户照片 还有另外 5 组不同的照片 类似于用户照片 但与用户照片没有联系 最好是将所有照片存储在一个数据库表中并尝试从该表中引用它们 还是最好为每组照片创建不同的表 我可以看到
  • masm 错误 A2075:跳转目的地太远:30 个字节

    我的女士给我布置了一个作业 其中我必须编写一个程序 该程序将通过键盘获取输入并检查嵌套括号的常规顺序 例如 input output 正确的格式 input output 不正确 我的程序 model small stack 100h 38
  • Spring AutoPopulateList 最大大小?

    我对 Spring 自动填充列表有疑问 我的用例如下 管理可以访问应用程序的用户列表 在 GUI 方面 我使用自动完成字段来搜索用户并将用户添加到右侧的表中 用户也可以从表中删除 当 GUI 用户提交时 GUI 会动态构建一个包含用户字段的
  • 读取文本文件的行并收到 Charmap 解码错误

    我使用 python3 3 和 sqlite3 数据库 我有一个大约 270mb 的大文本文件 我可以在 Windows7 中使用写字板打开它 该文件中的每一行如下所示 术语 t编号 n 我想读取每一行并将值保存在数据库中 我的代码如下所示
  • java.lang.ClassNotFoundException: org.apache.jsp.index_jsp

    我有一个旧的 struts 1 应用程序 一直使用 Ant 构建 我正在将其转换为使用 Maven 我的应用程序的结构是模块化的 在包含模块中进行依赖管理 包含模块的 dep mgmt 部分包含
  • 在 switch-case 中创建一个对象

    我使用 Visual Studio 2008 C 在我的开关案例中 a 想要创建一个对象 但我不工作 我无法在开关盒中创建对象 对吗 如果这是正确的 解决这个问题的最佳方法是什么 创建该对象的新方法 编辑代码 switch causwahl
  • Laravel 在身份验证后重定向到登录

    PROBLEM 我正忙于我的第一个 Laravel 应用程序 尽管我看到了这种编写方式的好处 但我很难理解其中的一些行为 当我尝试登录时 我被重定向到登录页面 看起来用户身份验证正确 但无论如何它都会重定向到登录页面 我拥有的 我的用户表如
  • 在 python 中迭代和更新列表[重复]

    这个问题在这里已经有答案了 我无法理解为什么下面的代码会无限期地出现 循环 当我不使用复制列表时 list Mohit kumar sffsfshfsd for w in list if len w gt 5 list insert 0 w
  • 在 JPA 上选择 DISTINCT

    我有一张桌子ISO 4217 值 https en wikipedia org wiki ISO 4217货币 有 6 行 ID 国家 地区 货币名称 字母代码 数字代码 次要单位 我需要获取一些数据4种最常用的货币 https en wi