多列上的SQL表筛选器
我有一个表,它具有其他表的ID值。我需要做的是基于一组列,应该分配过滤器,包括若找到任何唯一的行,那个么它也应该被添加到结果中 我的SQL表如下:多列上的SQL表筛选器,sql,sql-server,Sql,Sql Server,我有一个表,它具有其他表的ID值。我需要做的是基于一组列,应该分配过滤器,包括若找到任何唯一的行,那个么它也应该被添加到结果中 我的SQL表如下: A B C D E 1 1 1 1 0 1 1 1 1 2 1 2 1 1 1 1 2 1 1 0 2 1 1 1 3 2 1 1 1 4 2 1 2 2 1 3 1 1 2 0 3 1 1 2
A B C D E
1 1 1 1 0
1 1 1 1 2
1 2 1 1 1
1 2 1 1 0
2 1 1 1 3
2 1 1 1 4
2 1 2 2 1
3 1 1 2 0
3 1 1 2 1
A B C D E
1 1 1 1 0
1 2 1 1 0
2 1 1 1 3
2 1 2 2 1
3 1 1 2 0
这里,列是:A、B、C、D、E
需要分配的过滤器如下所示:
A B C D E
1 1 1 1 0
1 1 1 1 2
1 2 1 1 1
1 2 1 1 0
2 1 1 1 3
2 1 1 1 4
2 1 2 2 1
3 1 1 2 0
3 1 1 2 1
A B C D E
1 1 1 1 0
1 2 1 1 0
2 1 1 1 3
2 1 2 2 1
3 1 1 2 0
A B C D E
1 1 1 1 0
1 1 1 1 2
1 2 1 1 1
1 2 1 1 0
2 1 1 1 3
2 1 1 1 4
2 1 2 2 1
3 1 1 2 0
3 1 1 2 1
A B C D E
1 1 1 1 0
1 2 1 1 0
2 1 1 1 3
2 1 2 2 1
3 1 1 2 0
到目前为止,我想说的是:
SELECT t1.*
FROM TestTable t1,
TestTable t2
WHERE (t1.A = t2.A
AND t1.B = t2.B
AND t1.C = t2.C
AND t1.D = t2.D
AND t1.E < t2.E)
选择t1*
从测试表t1中,
测试表t2
式中(t1.A=t2.A
t1.B=t2.B
t1.C=t2.C
t1.D=t2.D
和t1.E
但是在这个查询中,我没有得到唯一的一行,该行对于列A具有相同的值,但是对于列B、C、D具有不同的值。从我所能看出,您想要:
select A, B, C, D, MIN(E)
from testtable t
group by A, B, C, D;
至少,这会产生您指定的输出。据我所知,您需要:
select A, B, C, D, MIN(E)
from testtable t
group by A, B, C, D;
至少,这会产生您指定的输出。您的第二个条件没有意义。你的第三个模棱两可。
E
的值最小超过了什么?在您的预期输出中,请指定哪一行满足哪些条件,这将有助于我们更好地理解。如果您还包括DDL和INSERT,这也很有帮助:-)/您的第二个条件没有意义。你的第三个模棱两可。E
的值最小超过了什么?在您的预期输出中,请指定哪一行满足哪些条件,这将有助于我们更好地理解。如果您将DDL和插入也包括在内,这也很有帮助:-)/不想抱怨,但问题(即使它很混乱)是关于两个表和它们之间的一些逻辑them@BartoszX我把它理解为“表中包含的行的值是来自其他表的外键”,我想知道什么是正确的。我不想抱怨,但问题(即使它很混乱)是关于两个表和它们之间的一些逻辑them@BartoszX我把它读作“该表包含的行的值是来自其他表的外键”,我想知道什么是正确的。