如何在 mysql SELECT 中替换具有优先级的行?

发布于 2024-11-30 23:14:27 字数 407 浏览 0 评论 0原文

例如:

code, attr, val, precedence 
(0, 'key', 'value1', 1 )
(1, 'key', 'value2', 1 )
(2, 'key', 'value3', 1 )
(3, 'key2', 'value1', 1 )
(4, 'key3', 'value1', 1 )
(5, 'key', 'nothis', 2 )
(6, 'key', 'final_value', 3 )

我想要得到这样的东西:

(6, 'key', 'final_value', 3 )
(3, 'key2', 'value1', 1 )
(4, 'key3', 'value1', 1 )

How to do it in MySQL?

For example:

code, attr, val, precedence 
(0, 'key', 'value1', 1 )
(1, 'key', 'value2', 1 )
(2, 'key', 'value3', 1 )
(3, 'key2', 'value1', 1 )
(4, 'key3', 'value1', 1 )
(5, 'key', 'nothis', 2 )
(6, 'key', 'final_value', 3 )

I want to get something like this:

(6, 'key', 'final_value', 3 )
(3, 'key2', 'value1', 1 )
(4, 'key3', 'value1', 1 )

How to do it that in MySQL?

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

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

发布评论

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

评论(1

思慕 2024-12-07 23:14:27

使用 id 的最大优先级列表进行连接。类似的事情:

SELECT *
FROM a
    INNER JOIN (SELECT attr, MAX(precedence) p FROM a) m
      ON m.attr = a.attr AND m.p = a.precedence
  GROUP BY a.attr;

每个属性仅分组一行;可以用 SELECT 子句中的 DISTINCT 替换

Make join with list of maximum precedences for id. Something like that:

SELECT *
FROM a
    INNER JOIN (SELECT attr, MAX(precedence) p FROM a) m
      ON m.attr = a.attr AND m.p = a.precedence
  GROUP BY a.attr;

grouping for only one row per attr; can be replaced by DISTINCT on SELECT clause

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文