mysql select 返回列_SQL / mysql – selectdistinct / UNIQUE,但返回所有列?

你正在寻找一个组:

select * from table group by field1

偶尔可以写一个独特的声明:

select distinct on field1 * from table

然而,在大多数平台上,上述两者都不会起作用,因为其他列上的行为是未指定的。 (MySQL中的第一个作品,如果这就是你使用的。)

你可以获取不同的字段,并坚持每次select一个任意的行。

在某些平台上(例如PostgreSQL,Oracle,T-SQL),可以直接使用窗口函数完成:

select * from ( select *, row_number() over (partition by field1 order by field2) as row_number from table ) as rows where row_number = 1

在其他人(MySQL,SQLite)上,你需要编写子查询,使你能够自己join整个表( 例子 ),所以不推荐。

从你的问题的措辞,我明白,你要为给定的字段select不同的值,并为每个这样的值列出同一行中的所有其他列值。 大多数DBMS不会同时使用DISTINCT和GROUP BY ,因为结果不确定。

可以这样想:如果你的field1不止一次出现, field2值将被列出(假设你在两行中的field1有相同的值,但在这两行中有两个不同的field2值)。

但是,您可以使用聚合函数(显式地为每个要显示的字段)并使用GROUP BY而不是DISTINCT :

SELECT field1, MAX(field2), COUNT(field3), SUM(field4), .... FROM table GROUP BY field1

如果我正确地理解了你的问题,那就和我刚才的问题类似。 您希望能够将DISTINCT的可用性限制到指定的字段,而不是将其应用于所有数据。

如果你使用GROUP BY而没有聚合函数,那么你的GROUP BY将会是你的DISTINCT文件。

如果你提出你的查询:

SELECT * from table GROUP BY field1;

它将根据field1的单个实例显示所有结果。

例如,如果你有一个名字,地址和城市的表。 一个人有多个地址logging,但你只需要一个人的地址,你可以查询如下:

SELECT * FROM persons GROUP BY name;

结果将只有该名称的一个实例将显示其地址,另一个将从结果表中省略。 警告:如果您的文件夹具有primefaces值(如firstName,lastName),您希望由两者进行分组。

SELECT * FROM persons GROUP BY lastName, firstName;

因为如果两个人拥有相同的姓氏,而您只按姓氏分组,则其中一个人将从结果中省略。 你需要考虑到这些事情。 希望这可以帮助。

SELECT c2.field1 , field2 FROM (SELECT DISTINCT field1 FROM dbo.TABLE AS C ) AS c1 JOIN dbo.TABLE AS c2 ON c1.field1 = c2.field1

很好的问题@aryaxt – 你可以告诉这是一个很好的问题,因为你问了5年前,我今天偶然发现了这个问题,试图find答案!

我只是试图编辑接受的答案,以包括这一点,但万一我的编辑没有进入:

如果你的表不是那么大,并假设你的主键是一个自动递增的整数,你可以做这样的事情:

SELECT table.* FROM table --be able to take out dupes later LEFT JOIN ( SELECT field, MAX(id) as id FROM table GROUP BY field ) as noDupes on noDupes.id = table.id WHERE //this will result in only the last instance being seen noDupes.id is not NULL

你可以用WITH子句来做。

例如:

WITH c AS (SELECT DISTINCT a, b, c FROM tableName) SELECT * FROM tableName r, c WHERE c.rowid=r.rowid AND ca=ra AND cb=rb AND cc=rc

这也允许您仅select在WITH子句查询中select的行。

对于SQL Server,您可以使用dense_rank和其他窗口函数来获取指定列上具有重复值的所有行和列。 这是一个例子…

with t as ( select col1 = 'a', col2 = 'b', col3 = 'c', other = 'r1' union all select col1 = 'c', col2 = 'b', col3 = 'a', other = 'r2' union all select col1 = 'a', col2 = 'b', col3 = 'c', other = 'r3' union all select col1 = 'a', col2 = 'b', col3 = 'c', other = 'r4' union all select col1 = 'c', col2 = 'b', col3 = 'a', other = 'r5' union all select col1 = 'a', col2 = 'a', col3 = 'a', other = 'r6' ), tdr as ( select *, total_dr_rows = count(*) over(partition by dr) from ( select *, dr = dense_rank() over(order by col1, col2, col3), dr_rn = row_number() over(partition by col1, col2, col3 order by other) from t ) x ) select * from tdr where total_dr_rows > 1

这是col1,col2和col3的每个不同组合的行数。

SELECT * FROM tblname GROUP BY duplicate_values ORDER BY ex.VISITED_ON DESC LIMIT 0 , 30

在ORDER BY我刚刚把例子放在这里,你也可以在这里添加ID字段

这是一个非常好的问题。 我已经阅读了一些有用的答案,但可能我可以添加一个更精确的解释。

只要不查询其他信息,使用GROUP BY语句减less查询结果的数量就很容易。 假设你有下面的表格“位置”。

--country-- --city-- France Lyon Poland Krakow France Paris France Marseille Italy Milano

现在查询

SELECT country FROM locations GROUP BY country

将导致:

--country-- France Poland Italy

但是,下面的查询

SELECT country, city FROM locations GROUP BY country

…在MS SQL中抛出一个错误,因为你的计算机如何知道法国“里昂”,“巴黎”或“马赛”三个城市中的哪一个在“法国”右侧的字段?

为了更正第二个查询,您必须添加此信息。 一种方法是使用函数MAX()或MIN(),在所有候选项中select最大值或最小值。 MAX()和MIN()不仅适用于数值,还可以比较string值的字母顺序。

SELECT country, MAX(city) FROM locations GROUP BY country

将导致:

--country-- --city-- France Paris Poland Krakow Italy Milano

要么:

SELECT country, MIN(city) FROM locations GROUP BY country

将导致:

--country-- --city-- France Lyon Poland Krakow Italy Milano

只要您从字母(或数字)顺序的两端select您的值,这些function就是一个很好的解决scheme。 但是,如果情况并非如此呢? 让我们假设你需要一个具有某种特征的值,例如以字母“M”开始。 现在事情变得复杂了。

到目前为止,我唯一能find的解决scheme是将整个查询放入子查询中,然后用手来构造额外的列:

SELECT countrylist.*, (SELECT TOP 1 city FROM locations WHERE country = countrylist.country AND city like 'M%' ) FROM (SELECT country FROM locations GROUP BY country) countrylist

将导致:

--country-- --city-- France Marseille Poland NULL Italy Milano

这可以通过内部查询来完成

$query = "SELECT * FROM (SELECT field FROM table ORDER BY id DESC) as rows GROUP BY field";

只需在GROUP BY子句中包含所有的字段。

SELECT DISTINCT如果所有三列的值在表中都是唯一的,则FIELD1,FIELD2,FIELD3 FROM TABLE1有效。

例如,如果您的名字有多个相同的值,但所选列中的姓氏和其他信息不同,则logging将包含在结果集中。

将GROUP BY添加到您要检查重复您的查询可能看起来像字段的字段

SELECT field1, field2, field3, ...... FROM table GROUP BY field1

field1将被检查以排除重复的logging

或者你可能会像查询

SELECT * FROM table GROUP BY field1

从SELECT中排除field1的重复logging

SELECT * from table where field in (SELECT distinct field from table)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤题库】陕西师范大学300018 世界史(下)

《世界史(下)》作业 一、名词解释 1、三权分立 2、考迪罗 3、斯大林格勒会战 4、马歇尔计划 5、匈牙利事件 6、美第奇家族 7、明治维新 8、人文主义 9、古巴导弹危机 10、奴隶贸易 11、七年战争 12、大西洋宪章 13、重商主义 14、文官制度 15、《解放宣言…

【渝粤题库】陕西师范大学600002 物理化学(下) 作业(专升本)

《物理化学(下)》作业 一.选择题 1.已知298 K时,(NH4)2SO4.NaOH.Na2SO4的 分别为3.064 10-2. 2.451 10-2.2.598 10-2 Sm2 mol-1,则NH4OH的为 ( ) A. 1.474 10-2 B. 2.684 10-2 C. 2.949 10-2 D. 5.428 10-2 2.质量摩尔浓度…

java中的规范是什么意思_Java中的异常规范有什么好处?

我从C来到Java.在Java和C中,我们都可以指定异常.看起来像这样:void function_name() throw(Exception){...if (error){throw Exception("Error");}...}据我所知,在C中编写异常规范被认为是一种不好的做法.与C不同,在Java中,我们必须这样做.所以,我的问题是…

jpa中::::_项目学生:JPA标准查询

jpa中::::这是Project Student的一部分。 其他职位包括带有Jersey的Webservice Client,带有Jersey的 Webservice Server , 业务层 , 具有Spring Data的持久性 ,分片集成测试数据和Webservice Integration 。 我们已经介绍了CRUD的…

【渝粤题库】陕西师范大学800011 专题地图制图

《专题地图制图》作业 一、名词解释 1、专题地图 2、范围法 3、绝对比率符号 4、电子地图 5、普通地图 6、质底法 7、分级统计图法 8、条件比率符号 9、视觉重力 10、定位图表法 11、连续比率符号 12、互补色 二、填空 1、专题地图按照内容的概括程度可以分为 、 、 。 2、专题…

国家开放大学2021春1098中学数学教学研究题目

教育 教育 试卷代号:1098 2021年春季学期期末统一考试 中学数学教学研究 试题 2021年7月 一、填空题(本题共20分,每个空2分) 1.布卢姆把认知领域的目标分为 、 、 、________4个等级目标。 2.中学数学教学…

java 注解scheduler_使用spring的@Scheduled注解执行定时任务,启动项目不输出警告

在applicationContext.xml中添加:xmlns:task"http://www.springframework.org/schema/task"xsi:schemaLocation"http://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task-4.0.xsd">java代码&…

具有ELK的APIGEE API网关日志管理(Elastic Search,Logstash和Kibana)

在本文中,我们将看到如何使用 Elastic Search , Logstash 和 Kibana 管理APIGEE API网关生成的日志 。 下图突出显示了日志数据如何流经ELK堆栈以进行数据可视化和监视。 作为API网关的一部分,我们将使用MessageLogging策略在代理流&#xf…

【渝粤题库】陕西师范大学209010 现代教育战略 作业 (专升本)

《现代教育战略》作业 一、辨析题 1.战术是战略的具体表现形式,二者是一般和特殊的关系。 2.政治品德素质是一个人对国家、民族的政治意识、立场,是一个人的道德好感,是不可教的。 3.创新的新就一般意义的新事物。 4.能力就是一个所拥有的知识…

【渝粤教育】电大中专混凝土结构题库作业 题库

1.题结构试验时,试件的就位型式最符合实际受力状态而应优先采用的是() A.反位试验 B.正位试验 C.卧位试验 D.异位试验 正确 正确答案:左边查询 学生答案:B 2.非破损检测技术可应用于混凝土、钢材和砖石砌体等各种材料组成的结构构件的结构试验…

java中PL层_安装pljava - RuralHunter的个人空间 - OSCHINA - 中文开源技术交流社区

pljava是pgsql跟java的桥接,安装以后就可以在pgsql里面调用java了。这里记录一下我在ubuntu server下安装的过程1. 下载源码编译很简单,下载,解压,设置一下JAVA_HOME(如果没设的话),然后make2. 把生成的build目录里面的…

【渝粤题库】广东开放大学 民事诉讼法学 形成性考核

选择题 题目:在仲裁裁决具有可撤销的法定理由时,仲裁当事人可以向法院申请撤销该仲裁裁决,法院认为当事人的申请具有法定撤销理由的,可以( )仲裁裁决。 答案: A、调解 B、裁定撤销 C、判决撤销…

java依赖注入_Java依赖注入选项

java依赖注入我想花一些时间来总结一些流行的Java依赖注入(DI)框架。 这是可用功能的高级概述。 首先,什么是依赖注入? “依赖注入是一种软件设计模式,可以删除硬编码的依赖,并可以在运行时或编译时更改它…

【渝粤教育】电大中专跨境电子商务理论与实务 (19)作业 题库

1.亚马逊的运营模式是M2C模式:平台招商。该说法( ) A.错误 B.正确 错误 正确答案:左边查询 学生答案:未作答 2.B2C跨境电商或平台的代表企业有敦煌网.阿里巴巴国际站。该说法( ) A.错误 B.正确 …

Java连接微软ad_Java:连接到Active Directory(AD)?

我正在尝试与AD联系。我试图用这个代码来连接,但它似乎并没有连接。我很抱歉不能比这更具体,但这只是我所知道的。什么都没发生。我已经删除了我认为是这个类的非必要部分,在那里处理结果,因为在这一点上根本没有任何结果需要处理…

java se 定时任务_Java实现定时任务的三种方法

一、Quartz的特点 按作业类的继承方式来分,主要有以下两种: 作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式作业类不继承org.springframework.scheduling.quartz.QuartzJobBean类的方式 注:个人比较推崇第二种&…

Spring框架介绍

这是Spring框架和Spring核心概念的简介。 在本教程中,我们将介绍Spring Framework的主要优点和功能。 在随后的教程中,我们将学习有关Spring和Spring Boot的更多信息。 总览 我们知道, Spring框架是Java开发人员中最受欢迎的应用程序框架。 …

【渝粤教育】电大中专职业生涯规划 (2)_1作业 题库

1职业价值观具有明确的目的性、()和坚定性的职业选择的态度和行为。 A自由性 B动机性 C自觉性 D制约性 错误 正确答案:左边查询 学生答案:A 2不属于探索价值观方法的是()。 A澄清反应法 B意见表决法 C间接提…

【渝粤教育】电大中专会计电算化_1作业 题库

1.下列有关会计电算化狭义概念的说法正确的是()。 A.以会计理论为主体的电子信息技术在会计工作中的应用 B.与实现电算化有关的所有工作 C.以电子计算机为主体的电子信息技术在会计工作中的应用 D.与实现电算化有关的主要工作 错误 正确答案:左边查询 学生答案&…

java 移动其他窗口_移动窗口平均值不等

TL;DR: 无论如何我可以摆脱我的第二个 for -loop?我在2D网格上有一系列时间点 . 为了消除它们位置的快速波动,我在一个帧窗口上平均坐标 . 现在在我的情况下,它想要包含特定点的帧,如果它的行程比 cut_off 值更远 .在第一个 for -…