簡體   English   中英

如何獲得不同的記錄,但僅基於 MySQL 中的前 2 位數字

[英]How to get distinct records but on base on first 2 digits only in MySQL

我想從 MySQL 表中獲取不同的記錄(只有一個字段),並且該字段僅包含數字。

例子:

00010000
01111100
01112000
01118000
02301201

但是根據前 2 位數字考慮不同的記錄。 所以在上面的例子中,我只需要取回 3 條記錄:

00010000
01112000
02301201

此外,我想修剪 rest 的數字,所以實際的最終結果應該是:

00
01 
02

如此獨特和分組將不會在這里剪切。 任何想法?

假設您希望重復項中的價值最小,您可以嘗試:

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 

Output

00
01
02

dbfiddle 上的演示

如果您只想要修剪后的值,請嘗試以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM