Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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中仅基于前2位获得不同的记录_Mysql - Fatal编程技术网

如何在MySQL中仅基于前2位获得不同的记录

如何在MySQL中仅基于前2位获得不同的记录,mysql,Mysql,我想从MySQL表中获取不同的记录(只有一个字段),并且该字段只包含数字 例如: 00010000 01111100 01112000 01118000 02301201 但根据前两位数字考虑不同的记录。因此,在上述情况下,我只需要取回3条记录: 00010000 01112000 02301201 除此之外,我想修剪其余的数字,因此实际的最终结果应该是: 00 01 02 如此独特和分组将不会在这里切割。有什么想法吗?如果您只想要修剪后的值,请尝试以下方法: SELECT SUBSTR

我想从MySQL表中获取不同的记录(只有一个字段),并且该字段只包含数字

例如:

00010000
01111100
01112000
01118000
02301201
但根据前两位数字考虑不同的记录。因此,在上述情况下,我只需要取回3条记录:

00010000
01112000
02301201
除此之外,我想修剪其余的数字,因此实际的最终结果应该是:

00
01 
02

如此独特和分组将不会在这里切割。有什么想法吗?

如果您只想要修剪后的值,请尝试以下方法:

SELECT SUBSTRING(yourColumn,1,2) as trimmedval
FROM Table
GROUP BY SUBSTRING(yourColumn,1,2)

如果只需要修剪的值,请尝试以下操作:

SELECT SUBSTRING(yourColumn,1,2) as trimmedval
FROM Table
GROUP BY SUBSTRING(yourColumn,1,2)

假设您希望从副本中获得最少的值,您可以尝试:

SELECT t1.col
FROM yourTable t1
INNER JOIN
(
    SELECT LEFT(col, 2) AS prefix, MIN(col) AS min_col
    FROM yourTable
    GROUP BY LEFT(col, 2)
) t2
    ON LEFT(t1.col, 2) = t2.prefix AND
       t1.col = t2.min_col;

注意:MySQL中的数字不是以零开头的,因此您的要求(以及这个答案)只有在您的列是文本时才有意义。

假设您希望从重复项中获得最小的值,您可以尝试:

SELECT t1.col
FROM yourTable t1
INNER JOIN
(
    SELECT LEFT(col, 2) AS prefix, MIN(col) AS min_col
    FROM yourTable
    GROUP BY LEFT(col, 2)
) t2
    ON LEFT(t1.col, 2) = t2.prefix AND
       t1.col = t2.min_col;

注意:MySQL中的数字不是以零开头的,因此您的要求(以及这个答案)只有在您的列是文本时才有意义。

DISTINCT
可以与
LEFT
配合使用,以给出您想要的结果:

SELECT DISTINCT(LEFT(value, 2)) AS value
FROM data
ORDER BY value 
输出

00
01
02

DISTINCT
将与
LEFT
配合使用,以获得您想要的结果:

SELECT DISTINCT(LEFT(value, 2)) AS value
FROM data
ORDER BY value 
输出

00
01
02


(011111001120000111100011180001118000)
中选择
01112000
的逻辑是什么?简单地说,第一条记录是以01No开头的,第二条记录是以
01
开头的,但现在您的要求可能更清楚了。从
中选择
01112000
的逻辑是什么(01111100111200001118000)
?简单地说,第一条记录以01No开头,第二条记录以
01
开头,但现在您的要求可能更清楚了。错误代码:1064。您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解正确的语法使用方法。)“在第三行,我刚试过,对我来说很有效。您的列是文本字段吗?字段是varchart当它应该工作时,您可以再次复制它吗?我刚开始编辑过,也许你以前复制过。错误代码:1064。您的SQL语法有错误;查看与MySQL服务器版本相对应的手册,以了解第3行“near')的正确语法。我刚刚尝试过,对我有用。您的列是文本字段吗?字段是varchart当它应该工作时,您可以再次复制它吗?我一开始就编辑过,也许你以前复制过。是的,这是一个Varchar是的,这是一个varcharI,我看到这个答案太晚了。无论如何,谢谢。@user2417624是的-我注意到一旦我发布了它,你已经接受了另一个答案。没关系,我希望这是有用的。我看到这个答案太晚了。无论如何,谢谢。@user2417624是的-我注意到一旦我发布了它,你已经接受了另一个答案。没关系,我希望这是有用的。