使用通配符选择MySQL中最具体的行

时间:2011-12-01 14:46:16

标签: mysql select wildcard

我有一个包含三列的表ABR:两个查找值,AB以及结果Result。我希望在AB

的情况下返回结果

但是,对于A的某些值,列B可以是通配符。在这种情况下,我想要最具体的行。

我似乎无法弄清楚MySQL声明 - 我找到了一个,但它长7行,有5 =和2 IF's ,必须有更好的方法。

A   B   Result
1   *   First
2   *   Second
2   1   Third
2   2   Fourth
3   *   Fifth

Example wanted results:
A=1, B=5 -> First
A=1, B=0 -> First
A=2, B=2 -> Fourth
A=2, B=4 -> Second
A=3, B=7 -> Fifth

请注意,列值可以在以后更改:我们可以为A和B添加额外的行,或者删除值。 SQL中的硬编码是不可接受的。

1 个答案:

答案 0 :(得分:0)

SELECT Result
    FROM ABR
    WHERE A = @LookupA
        AND (B = @LookupB OR B = '*')
    ORDER BY B DESC LIMIT 1;