Mysql-过滤出没有内部联接的行
我不知道如何命名这个问题 我有一个表,比如t1,有3个字段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), (
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,但因为它是一个键,所以它实际上毫无意义