如何根据值的字符长度从 sql table 获取唯一值
How to get unique value from sql table based on charachter length of value
这里我有两列,例如 sql table 中的示例 column1 和 column2,我想在 column2 的基础上获得唯一值行来自 table 的列值
下面的虚拟示例 table
Column1 Column2
---------- -------------
1001 ab
1001 abc
1001 abcd
2001 wxyz
2001 wxy
2001 wx
在上面的示例中,值从 a 开始,另一个值从 w 开始,在 Column2
在相同值字符长度的基础上,我想得到如下结果
输出:
Column1 Column2
---------- -----------
1001 abcd
2001 wxyz
在此先感谢您的帮助:)
如果我没理解错的话,你想要最大的长度(你没有说当有两个长度相同时该怎么做)但基本上你想要这样的东西:
SELECT * FROM YourTable
WHERE (column1,len(column2)) IN(select Column1,max(len(column2))
FROM YourTable
GROUP BY Column1)
如果您正在查看 column2 中的值是否包含在其他行中的某个位置,换句话说:如果您正在查找具有自身唯一的字符组合的行,这可能是您的解决方案:
CREATE TABLE TestTable(Column1 INT,Column2 VARCHAR(100));
INSERT INTO TestTable VALUES
(1001,'ab')
,(1001,'abc')
,(1001,'abcd')
,(2001,'wxyz')
,(2001,'xyz')
,(2001,'yz');
SELECT *
FROM TestTable
WHERE NOT EXISTS(SELECT 1
FROM TestTable AS x
WHERE x.Column1=TestTable.Column1
AND LEN(x.Column2)>LEN(TestTable.Column2)
AND x.Column2 LIKE '%' + TestTable.Column2 + '%'
)
DROP TABLE TestTable;
这里我有两列,例如 sql table 中的示例 column1 和 column2,我想在 column2 的基础上获得唯一值行来自 table 的列值
下面的虚拟示例 table
Column1 Column2
---------- -------------
1001 ab
1001 abc
1001 abcd
2001 wxyz
2001 wxy
2001 wx
在上面的示例中,值从 a 开始,另一个值从 w 开始,在 Column2
在相同值字符长度的基础上,我想得到如下结果
输出:
Column1 Column2
---------- -----------
1001 abcd
2001 wxyz
在此先感谢您的帮助:)
如果我没理解错的话,你想要最大的长度(你没有说当有两个长度相同时该怎么做)但基本上你想要这样的东西:
SELECT * FROM YourTable
WHERE (column1,len(column2)) IN(select Column1,max(len(column2))
FROM YourTable
GROUP BY Column1)
如果您正在查看 column2 中的值是否包含在其他行中的某个位置,换句话说:如果您正在查找具有自身唯一的字符组合的行,这可能是您的解决方案:
CREATE TABLE TestTable(Column1 INT,Column2 VARCHAR(100));
INSERT INTO TestTable VALUES
(1001,'ab')
,(1001,'abc')
,(1001,'abcd')
,(2001,'wxyz')
,(2001,'xyz')
,(2001,'yz');
SELECT *
FROM TestTable
WHERE NOT EXISTS(SELECT 1
FROM TestTable AS x
WHERE x.Column1=TestTable.Column1
AND LEN(x.Column2)>LEN(TestTable.Column2)
AND x.Column2 LIKE '%' + TestTable.Column2 + '%'
)
DROP TABLE TestTable;