Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL删除SELECT上重复的行数据_Mysql_Select_Duplicate Data - Fatal编程技术网

MySQL删除SELECT上重复的行数据

MySQL删除SELECT上重复的行数据,mysql,select,duplicate-data,Mysql,Select,Duplicate Data,我有一个表,我想在使用SELECT操作时过滤掉重复的数据,该表本身包含如下数据: |=======| | SPEED | |=======| | 100 | | 100 | | 90 | | 80 | | 80 | | 100 | | 80 | |=======| CREATE TABLE `yourtable` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Speed` int(11) DEFAULT NULL,

我有一个表,我想在使用SELECT操作时过滤掉重复的数据,该表本身包含如下数据:

|=======|
| SPEED |
|=======|
|  100  |
|  100  |
|   90  |
|   80  |
|   80  |
|  100  |
|   80  |
|=======|
CREATE TABLE `yourtable` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Speed` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=MyISAM
我想要的是这样的,请注意,订单仍然完好无损:

|=======|
| SPEED |
|=======|
|  100  |
|   90  |
|   80  |
|  100  |
|   80  |
|=======|
DISTINCT或GROUP BY无效,因为它将丢弃所有重复的数据

我之所以需要这种数据,是因为我想使用这种数据绘制图表,通过减少节点(删除某些序列中的重复数据),图表将不那么拥挤,并且可以更快地进行编辑,因为问题已经澄清

为了归档这样的内容,您的表需要有另一列,我们将其称为
Id
。我的测试表如下所示:

|=======|
| SPEED |
|=======|
|  100  |
|  100  |
|   90  |
|   80  |
|   80  |
|  100  |
|   80  |
|=======|
CREATE TABLE `yourtable` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Speed` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=MyISAM
为了检查下一行是否为相同的田间速度值,您可以使用
左连接
,并省略两个值相等的所有数据

试试这个:

SELECT A.Id, A.Speed, B.* 
FROM yourtable AS A
LEFT JOIN yourtable AS B ON A.Id+1 = B.Id
WHERE A.Speed != B.Speed OR ISNULL(B.Speed);

你还有其他字段吗?如果你给出完整的表结构,基于一列,这将非常有用。数据库中的表没有顺序继承概念。根据定义,它们是一组无序的行。您必须提供一些其他信息A:唯一地标识每个实例,B:提供值的顺序。是的,我的数据是正确的,我想要的结果也是正确的…我将此用于绘制图表,通过丢弃重复的数据来减少节点是好的可能是术语“重复”在数据库中的数据方面有点过载。澄清之后,我改变了原来的答案。试试看!