选择具有随机 ID 的不同名称

发布于 2024-12-20 21:39:40 字数 289 浏览 2 评论 0原文

我有一个带有 id 和名称的表(一堆与此查询不相关的其他内容)。现在我需要一个 SQL 语句,该语句为每个不同的名称返回一行,并且在该行中我需要名称和一个 id(可以是任何 id)。

该表看起来像这样:

id | name
---+-----
 1 | a2
 2 | a2
 3 | a4
 4 | a4
 5 | a2
 6 | a3

顺便说一句。使用 Postgres 8.4

尝试了各种分组或与 self 连接的组合。这是否可以在不创建额外表的情况下实现?

I have a table with an id and a name (an a bunch of other stuff not relevant for this query). Now I need an SQL statement that returns one row per distinct name and in that row I need the name and one id (can be any id).

The table is looking something like this:

id | name
---+-----
 1 | a2
 2 | a2
 3 | a4
 4 | a4
 5 | a2
 6 | a3

btw. using Postgres 8.4

Tried various combinations of grouping or joining with self. Is this even possible without creating extra tables?

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

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

发布评论

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

评论(3

国产ˉ祖宗 2024-12-27 21:39:40

任意选择返回每个名称的最小 id。

SELECT name, MIN(id)
    FROM YourTable
    GROUP BY name

Arbitrarily choosing to return the minimum id per name.

SELECT name, MIN(id)
    FROM YourTable
    GROUP BY name
[浮城] 2024-12-27 21:39:40

您可以查看 PostgreSQL wiki。它显示了如何选择随机行。

您可以使用 random() 函数使用 SELECTORDER BY 子句来选择随机行。示例:

SELECT id FROM mytable ORDER BY random()

然后您可以使用GROUP BY来选择不同的名称。您可能需要使用 LIMIT 子句限制结果。所以查询看起来像这样:

SELECT id, name FROM table_name GROUP BY name ORDER BY random() LIMIT 1

You may look at PostgreSQL wiki. It shows how to select random rows.

You may use random() function to select random rows using ORDER BY clause of SELECT. Example:

SELECT id FROM mytable ORDER BY random()

You can then use GROUP BY to select distinct names. You may need to limit results using LIMIT clause. So the query looks something like this:

SELECT id, name FROM table_name GROUP BY name ORDER BY random() LIMIT 1
离去的眼神 2024-12-27 21:39:40
select ID, name from table group by name;
select ID, name from table group by name;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文