Mysql-过滤出没有内部联接的行

Mysql-过滤出没有内部联接的行,mysql,join,where,Mysql,Join,Where,我不知道如何命名这个问题 我有一个表,比如t1,有3个字段 f1----f2----f3 1 v1 0 2 v2 0 3 v3 0 4 v2 10 5 v3 10 如果f3=0或f3=10,我想从表中提取值。但是,如果有f3=10的记录,那么它将覆盖0。 为了便于理解 Q1: select * from t1 where f3 = 0 => returns (1,v1,0), (2,v2,0), (

我不知道如何命名这个问题 我有一个表,比如t1,有3个字段

 f1----f2----f3
 1     v1     0
 2     v2     0
 3     v3     0
 4     v2    10
 5     v3    10
如果f3=0或f3=10,我想从表中提取值。但是,如果有f3=10的记录,那么它将覆盖0。 为了便于理解

Q1: select * from t1 where f3 = 0  => returns (1,v1,0), (2,v2,0), (3,v3, 0)
Q2: select * from t1 where f3 = 10 => returns           (2,v2,10),(3,v3,10)
我想要的是1,v1,0,2,v2,10,3,v3,10。我想在where条件下使用一些简单的if语句来实现这一点。
这可能吗?

您应该尝试以下方法:

 Select f1, f2, MAX(f3) from t1
 where f3 IN (0, 10)
 group by f2;

如果你选择。。。f3=10,那么就不可能返回任何f3=0行了……您希望向下筛选到f3=0或10的行,然后返回每个v2中f3最高的行,对吗?您需要pk是出于特定原因还是可以不需要pk?如果这是您想要的,请参阅@Marc B:当然,指定f3=0不会获取任何10。我想做的是将这两个查询结合起来,用一些IF语句生成一个where条件,并获得预期的结果。仅在f3上使用MAX,f1列的值将不正确。结果将需要一个MINf1,但因为它是一个键,所以它实际上毫无意义