如何在MySQL中仅基于前2位获得不同的记录
我想从MySQL表中获取不同的记录(只有一个字段),并且该字段只包含数字 例如:如何在MySQL中仅基于前2位获得不同的记录,mysql,Mysql,我想从MySQL表中获取不同的记录(只有一个字段),并且该字段只包含数字 例如: 00010000 01111100 01112000 01118000 02301201 但根据前两位数字考虑不同的记录。因此,在上述情况下,我只需要取回3条记录: 00010000 01112000 02301201 除此之外,我想修剪其余的数字,因此实际的最终结果应该是: 00 01 02 如此独特和分组将不会在这里切割。有什么想法吗?如果您只想要修剪后的值,请尝试以下方法: SELECT SUBSTR
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是的-我注意到一旦我发布了它,你已经接受了另一个答案。没关系,我希望这是有用的。