有没有办法在HQL中创建一个Distinct查询.通过使用"distinct"关键字或其他方法.我不确定distinct是否是HQL的有效关键字,但我正在寻找与SQL关键字"distinct"相当的HQL.
执行以下语句后:
SELECT Category FROM MonitoringJob ORDER BY CreationDate DESC
Run Code Online (Sandbox Code Playgroud)
我从数据库中获取以下值:
test3
test3
bildung
test4
test3
test2
test1
Run Code Online (Sandbox Code Playgroud)
但我希望删除重复项,如下所示:
bildung
test4
test3
test2
test1
Run Code Online (Sandbox Code Playgroud)
我尝试使用DISTINCT,但它在一个语句中不能与ORDER BY一起使用.请帮忙.
重要:
我尝试过:
SELECT DISTINCT Category FROM MonitoringJob ORDER BY CreationDate DESC
Run Code Online (Sandbox Code Playgroud)
它不起作用.
CreationDate的订单非常重要.
给出以下简单示例:
List<string> list = new List<string>() { "One", "Two", "Three", "three", "Four", "Five" };
CaseInsensitiveComparer ignoreCaseComparer = new CaseInsensitiveComparer();
var distinctList = list.Distinct(ignoreCaseComparer as IEqualityComparer<string>).ToList();
Run Code Online (Sandbox Code Playgroud)
似乎CaseInsensitiveComparer实际上并不用于进行不区分大小写的比较.
换句话说,distinctList 包含与列表相同数量的项目.相反,我希望,例如,"三"和"三"被认为是平等的.
我错过了什么,或者这是Distinct运营商的问题?
所以我试图获取查询中不同pid的数量,但返回的值是错误的.
这就是我尝试做的事情:
$ad->getcodes()->groupby('pid')->distinct()->count()
Run Code Online (Sandbox Code Playgroud)
什么返回值"2",而它应返回的值应为"1".
作为一种解决方法,我这样做:
count($ad->getcodes()->groupby('pid')->distinct()->get())
Run Code Online (Sandbox Code Playgroud)
什么工作正常,返回"1"
是否有任何规则,count和distinct不能在同一个查询中?我发现解决方法有点"沉重",我想让原始查询工作:(
我很好奇是否有任何方法可以在Django中进行查询而不是SELECT * FROM...
"下面的".我正在尝试做一个" SELECT DISTINCT columnName FROM ...
".
具体来说,我有一个模型,看起来像:
class ProductOrder(models.Model):
Product = models.CharField(max_length=20, promary_key=True)
Category = models.CharField(max_length=30)
Rank = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
其中Rank
是一个排名Category
.我希望能够遍历所有类别,对该类别中的每个等级进行一些操作.
我想首先获得系统中所有类别的列表,然后查询该类别中的所有产品并重复,直到处理完每个类别.
我宁愿避免使用原始SQL,但如果我必须去那里,那就没事了.虽然我以前从来没有在Django/Python中编写原始SQL.
我正在HSQLDB
服务器上执行一些测试,其中包含一个包含500 000个条目的表.该表没有索引.有5000个不同的业务键.我需要一份清单.当然,我开始DISTINCT
查询:
SELECT DISTINCT business_key FROM memory WHERE
concept <> 'case' or
attrib <> 'status' or
value <> 'closed'
Run Code Online (Sandbox Code Playgroud)
大约需要90秒!
然后我尝试使用GROUP BY
:
SELECT business_key FROM memory WHERE
concept <> 'case' or
attrib <> 'status' or
value <> 'closed'
GROUP BY business_key
Run Code Online (Sandbox Code Playgroud)
它需要1秒!!!
试图找出我运行的差异,EXLAIN PLAN FOR
但它似乎为两个查询提供相同的信息.
EXLAIN PLAN FOR DISTINCT ...
isAggregated=[false]
columns=[
COLUMN: PUBLIC.MEMORY.BUSINESS_KEY
]
[range variable 1
join type=INNER
table=MEMORY
alias=M
access=FULL SCAN
condition = [ index=SYS_IDX_SYS_PK_10057_10058
other condition=[
OR arg_left=[ …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用基于行的限制(例如:setFirstResult(5)
和setMaxResults(10)
)在已连接到其他表的Hibernate Criteria查询上实现分页.
可以理解的是,数据随机被切断; 这里解释了原因.
作为解决方案,页面建议使用"第二个sql选择"而不是连接.
如何将现有条件查询(使用连接createAlias()
)转换为使用嵌套选择?
假设我a, b c, d
在MySQL数据库的表中有列.我要做的是在我的表中选择所有这4列的不同值(只有不同的值).我试过像这样的东西:
SELECT DISTINCT a,b,c,d FROM my_table;
SELECT DISTINCT a,b,c,d FROM my_table GROUP BY a,b,c,d;
Run Code Online (Sandbox Code Playgroud)
这些都没有奏效.有人可以帮忙吗?
谢谢
注意我想分别列的不同值a, b, c d
.不是值的独特组合
我有一个Google电子表格,其中的列如下所示:
City
----
London
Paris
London
Berlin
Rome
Paris
Run Code Online (Sandbox Code Playgroud)
我想计算每个不同城市的外观(所以我需要城市名称和出现次数).
City | Count
-------+------
London | 2
Paris | 2
Berlin | 1
Rome | 1
Run Code Online (Sandbox Code Playgroud)
我怎么做?