我有一个包含三列的表ABR
:两个查找值,A
和B
以及结果Result
。我希望在A
和B
但是,对于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中的硬编码是不可接受的。
答案 0 :(得分:0)
SELECT Result
FROM ABR
WHERE A = @LookupA
AND (B = @LookupB OR B = '*')
ORDER BY B DESC LIMIT 1;