MySQL:找到 MAX(var1) 但返回该条目的 var2

发布于 2024-12-24 17:53:11 字数 328 浏览 2 评论 0原文

我有一个表(或者更确切地说是一个长连接),其中包含字段(id、名称、prio),我在其中对 id 进行分组。

SELECT id, group_concat(name)
FROM my_table
GROUP BY id

现在我还希望有一列包含最低 prio 分数的名称。喜欢

SELECT id, group_concat(name), min(prio)
FROM my_table
GROUP BY id

,但我不想看到 prio 的最小值,而是想看到相应的“名称”,

有什么想法吗?

I have a table (or rather a long join) with fields (id, name, prio) where I group over id

SELECT id, group_concat(name)
FROM my_table
GROUP BY id

Now I'd also like to have a column with the name of the lowest prio score. Like

SELECT id, group_concat(name), min(prio)
FROM my_table
GROUP BY id

but instead of having the minimum value of prio I'd like to see the corresponding 'name'

Any idea?

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

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

发布评论

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

评论(2

总以为 2024-12-31 17:53:11

我认为您可以将其设为子查询,然后将其连接到表中,如下所示:

SELECT * FROM (
    SELECT id, group_concat(name), min(prio) AS lowest
        FROM my_table
    GROUP BY id ) foo
JOIN my_table mt ON foo.lowest = mt.prio AND foo.id=mt.id;

I think you can make this a sub-query and then join it to the table something like:

SELECT * FROM (
    SELECT id, group_concat(name), min(prio) AS lowest
        FROM my_table
    GROUP BY id ) foo
JOIN my_table mt ON foo.lowest = mt.prio AND foo.id=mt.id;
一百个冬季 2024-12-31 17:53:11

您无法在一次选择中完成此操作,请使用连接选择

SELECT a.id, ..., b.name FROM my_table JOIN ( SELECT id, name FROM my_table ORDER BY prio ASC LIMIT 1 ) AS b ON b.id = a.id ...

You cannot do it in one select , use joined select

SELECT a.id, ..., b.name FROM my_table JOIN ( SELECT id, name FROM my_table ORDER BY prio ASC LIMIT 1 ) AS b ON b.id = a.id ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文