选择具有随机 ID 的不同名称
我有一个带有 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
任意选择返回每个名称的最小 id。
Arbitrarily choosing to return the minimum id per name.
您可以查看 PostgreSQL wiki。它显示了如何选择随机行。
您可以使用
random()
函数使用SELECT
的ORDER BY
子句来选择随机行。示例:然后您可以使用
GROUP BY
来选择不同的名称。您可能需要使用LIMIT
子句限制结果。所以查询看起来像这样:You may look at PostgreSQL wiki. It shows how to select random rows.
You may use
random()
function to select random rows usingORDER BY
clause ofSELECT
. Example:You can then use
GROUP BY
to select distinct names. You may need to limit results usingLIMIT
clause. So the query looks something like this: