是否可以动态过滤一个表,其中'where'子句在某些其他条件下作用于另一个表的字段值,以确保只返回一行?我可以这样做吗?
SELECT COUNT(*) FROM stud t1
WHERE t1.name==SELECT name FROM (
SELECT name, row_number() over (PARTITION BY name) AS rn
FROM stud t2) t3
WHERE t3.rn==1;
当然,上面的查询只是一个虚拟的查询,但是理论上可以过滤上面的where子句吗?如果不是如何在更复杂的查询的情况下实现这样的功能?
答案 0 :(得分:0)
是。查询可以这样做:
SELECT COUNT(*) FROM stud t1
WHERE t1.name = (SELECT name
from sometable
where somecondition);
但是您需要确保子查询返回零或一行。如果您的查询可能返回多行,则可以改为使用IN
:
SELECT COUNT(*) FROM stud t1
WHERE t1.name IN (SELECT name
from sometable
where somecondition);