SQL检索,但检索结果中有某字段内容重复的数据只保留1条显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL检索,但检索结果中有某字段内容重复的数据只保留1条显示相关的知识,希望对你有一定的参考价值。

--判断一个字段重复就只显示一条,用distinct是不行的,可以用row_number()根据这个字段分组显示优先级,然后只取每个组的第一条
select * from
(select *,row_number() over(partition by 判断重复的字段名) as f_id from 表名) t
where f_id =1

参考技术A 我就默认你是想知道两行数据所有字段完全相同的情况了,
select distinct * from tablename

没有使用 Java 从数据库视图中检索到结果

【中文标题】没有使用 Java 从数据库视图中检索到结果【英文标题】:No results retrieved from database view using Java 【发布时间】:2013-11-12 11:18:48 【问题描述】:

我的数据库中有一个名为V_ENTITY 的视图,其中填充了一些条目。在 Eclipse 中使用 SQL 剪贴簿,我可以轻松地执行返回所需结果的查询。

但是,当我尝试从我的 DAO 类中检索条目时,我什么也得不到。我的计数返回 0 作为条目数,而其中有 7 个,我可以通过剪贴簿使用本机 SQL 查询来获取它们。

我为该特定视图创建了一个单独的实体:

@Entity
@Table(name = "V_ENTITY")
public class ViewEntity 
    ...

我使用 JPA2 CriteriaQuery API 进行动态查询。这是困扰我的 count 示例:

    CriteriaBuilder cb = entityManager.getCriteriaBuilder();
    CriteriaQuery<ViewEntity> transactionQuery = cb.createQuery(ViewEntity.class);
    Root<ViewEntity> ViewEntityRoot = transactionQuery.from(ViewEntity.class);

    Predicate[] predicates = new Predicate[<someSize>]
    predicates[<someIndex>] = cb.equal(
        root.get("foreignName").as(String.class),
        "%" + foreignName + "%"
    )

    CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
    countQuery.select(cb.count(ViewEntityRoot));
    countQuery.where(predicates);

    TypedQuery<Long> finalQuery = entityManager.createQuery(countQuery);
    return finalQuery.getSingleResult().intValue();

谁能帮我找出我的代码/思维中的缺陷?

【问题讨论】:

使用&lt;property name="show_sql"&gt;true&lt;/property&gt;属性向我们展示生成的sql请。 我不熟悉 CriteriaQuery,也不熟悉 ScrapBook。但我的第一个想法是:您是否将您的价值观提交到数据库?只要它们没有被提交,它们就只对插入值的用户可见。 @Templar,请发表您的评论作为答案,我根据您的建议找到了解决方案。 【参考方案1】:

使用&lt;property name="show_sql"&gt;true&lt;/property&gt; 属性向我们展示生成的sql pls

【讨论】:

以上是关于SQL检索,但检索结果中有某字段内容重复的数据只保留1条显示的主要内容,如果未能解决你的问题,请参考以下文章

sql android忽略重复检索内容

ORACLE的疑问,字段数据为空的时候,检索数据的不同结果

Oracle SQL查询:根据时间检索每组的最新值[重复]

从数据库中检索信息(1 个字段/对象;无数组)

SQL Query (SQL Server 2008) 从两个表中检索数据并对结果进行分组

检索按类别分组的 SQL 结果