我有一个包含多行且数据相同的表。我使用SELECTDISTINCT来获得一个唯一的行并且它工作正常。但是当我将ORDERBY与SELECTDISTINCT一起使用时,它会给我未排序的数据。谁能告诉我distinct是如何工作的?它根据什么标准选择行? 最佳答案 根据您之前的评论,您尝试运行的查询是Selectdistinctidfromtablewhereid2=12312orderbytimedesc.如我所料,这是你的问题。您的选择列和按列排序不同。您的输出行按时间排序,但该顺序不一定需要保留在id列中。这是一个例子。id|id
我正在尝试获取顺序与唯一ID无关的数据。所以我的查询很简单SELECTDISTINCTid1,id2FROMmessagesORDERBYdate如果我有一个包含以下数据的数据库:id1|id2|date5|6|1/2/20116|5|1/1/2011我只需要加载具有最新日期的列,因为id是相同的2个人。真的,我必须加载ID,其中一个ID是你的,所以我现在真正的查询是SELECTDISTINCTuserid_1,userid_2FROMmessagesWHEREuserid_2=$dbidORuserid_1=$dbidORDERBYdate我得到的结果是[65][59][95][51
我收到了一个相当大的MySQL数据库,其中有很多重复项。大约三分之一的数据库是重复的。它还缺少一个主键。数据库的结构是这样的:unique_id|field01|field02|field03|field04|......|field26|field27|现在unique_id应该是独一无二的;有很多重复项。此外,对于属于特定unique_id副本的一组行,其余列可能相同也可能不同。例如,查看下面的unique_id'id_1',两个实例中的field01相同,但field02和field03不同。我想删除重复项,让每个unique_id只保留一个副本。哪个幸存下来并不重要。示例:id
我有一个表项,其中包含如下项name------alphaalphabetacharliecharlie在这种情况下,我将如何删除重复的行,但应该保留一条记录。上表没有任何主键。 最佳答案 试试这个DELETEFROMitemWHEREGREATEST(0,@num:=IF(NAME=@NAME,@num+1,0),LEAST(0,LENGTH(@NAME:=NAME)))>0 关于mysql-删除没有主键的表中的重复行,我们在StackOverflow上找到一个类似的问题:
我有这样的tb1表:nameemaillinkjohnmyemail@gmail.comgooglejohnmyemail@gmail.comfacebookjohnmyemail2@gmail.comtwitter........andmore当我用查询调用数据时看起来像SELECTname,email,group_concat(DISTINCTlinkSEPARATOR'/')assourceFROMtb1groupbyemail结果是这样的:NAMEEMAILSOURCEjohnmyemail2@gmail.comtwitterjohnmyemail@gmail.comfaceb
在Debian上运行的MySQL数据库(版本5.5.41-0+wheezy1-log)。表hotels有一个列nameVARCHAR(128)并且引擎是InnoDB。CREATETABLE`hotels`(`id`int(11)unsignedNOTNULLAUTO_INCREMENT`name`varchar(128)NOTNULLDEFAULT''COMMENT'HotelName',PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=0DEFAULTCHARSET=utf8;这个表中有两条记录:1BESTWESTERNPREMIERLECAR
我在table上有一个叫做距离的表格。它有4列。id、start_from、end_to和距离。我有一些重复的记录。某种意义上的重复记录,start_from|end_to|distanceChennaiBangalore350BangaloreChennai350ChennaiHyderabad500HyderabadChennai510在上表中,钦奈到类加罗尔和类加罗尔到钦奈都有相同的距离。所以我需要查询以删除select上的那条记录。我想要一个像这样的输出start_from|end_to|distanceChennaiBangalore350ChennaiHyderabad50
使用PHP和MySQL,我试图从下面列出的所有4个表中的数字和类型列中获取所有不同的值:table_1ID|t1_number|t1_type1|1|new2|1|old3|2|new4|3|new5|1|oldtable_2ID|t2_number|t2_type1|1|future2|1|new3|3|past4|3|new5|1|newtable_3ID|t3_number|t3_type1|1|past2|1|new3|1|new4|1|new5|1|oldtable_4ID|t4_number|t4_type1|1|new2|4|new3|3|old4|2|new5|1|ne
考虑以下查询INSERTINTODummyTable(TextColumn)VALUES('Text');INSERTINTODummyTable(TextColumn)VALUES('Text');SELECTDISTINCTTextColumnFROMDummyTable注意第二个插入包含一个空格:'Text'但是DISTINCT忽略空格并只返回一行“文本”——如何让DISTINCT不忽略空格? 最佳答案 原来我在寻找BINARY关键字,然后DISTINCT比较原始二进制值,包括空格。SELECTDISTINCTBINARYTe
PostgreSQL快让我打小动物了。我正在为MySQL执行以下SQL语句以获取唯一的城市/州/国家列表。SELECTDISTINCTcity,state,countryFROMeventsWHERE(city>'')AND(number_id=123)ORDERBYoccured_atASC但是这样做会使PostgreSQL抛出这个错误:PGError:ERROR:forSELECTDISTINCT,ORDERBYexpressionsmustappearinselectlist但是,如果我将occured_at添加到SELECT,那么返回唯一列表就会失败。使用MySQL和第一次查询