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

发布于 2024-12-19 04:14:41 字数 650 浏览 0 评论 0原文

我有一个包含三列的表 ABR:两个查找值 AB 以及一个结果 Result。我希望在给定 AB 的情况下返回结果,

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

我似乎无法弄清楚 MySQL 语句 - 我找到了一个,但它有 7 行长,有 5 个 = 和两个 IF 的,一定有更好的办法。

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 中的硬编码内容是不可接受的。

I have a table ABR with three columns: two lookup values, A and B and a result Result. I want the result to be returned given A and B

But, for some values of A, column B can be a wildcard. In that case I want the most specific row.

I can't seem to figure out the MySQL statement though - I found one, but it was 7 lines long and had 5 = and two IF's, there must be a better way.

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

Do notice that the column values can change later: we can add extra rows for A and B, or remove values. Hardcoding stuff in the SQL is not acceptable.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可爱咩 2024-12-26 04:14:41
SELECT Result
    FROM ABR
    WHERE A = @LookupA
        AND (B = @LookupB OR B = '*')
    ORDER BY B DESC LIMIT 1;
SELECT Result
    FROM ABR
    WHERE A = @LookupA
        AND (B = @LookupB OR B = '*')
    ORDER BY B DESC LIMIT 1;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文