当第2列匹配时,查找第1列具有'彼此不同的行'

问题描述 投票:0回答:3

我是一个数据库表fls2中有2列的表,它是Sqlite;

name        |    sha256
------------|------------------
ab/ac/ad    |    12345
ab/ad/af    |    12345
zx/ad/af    |    12345

我想找到名称,其中'shad'的'name'如'ab%'和'name不如'ab%'都是正确的。因此,在上述情况下,三行共享的sha256为'12​​345',我想考虑一个子数据集。在该数据集中,如果'name like'ab%'和'name not like'ab%'都是正确的(显然对于2个或更多不同的行),我希望返回所有行。

我正在做的是寻找在2个不同的顶级目录中存在相同文件(由sha256标识)的情况。

我知道在获取数据后如何在perl中执行此操作,但理想情况下,如果我可以在数据库中执行此操作,那就更好了。我已经尝试过

select name 
from 
    fls2 
where 
    sha256 = (select sha256 from fls2 where name like 'ab%') 
and 
    name not like 'ab%';

但是它不返回任何行(而且我知道至少有几行是因为我手动找到了它们。)]

我有一个表,该表在SQLite数据库fls2中有2列;名称| sha256 ------------ | ------------------ ab / ac / ad | 12345 Ab / ad / af | 12345 zx / ad / af | 12345我会...

sql sqlite
3个回答
0
投票

使用聚合和having


0
投票

使用EXISTS


0
投票

在该数据集中,如果'name'like'ab%'和'name not like'ab%'都是正确的(显然对于2个或更多不同的行,我希望返回所有行。

© www.soinside.com 2019 - 2024. All rights reserved.