在PostgreSQL中使用带有两个表的DISTINCT和RANDOM

时间:2014-05-19 10:58:11

标签: sql postgresql random distinct

我有这个问题。我需要从tickettable查询票号和成员表中的成员名,在postgres中使用随机函数和distinct关键字。 MemberName应该是唯一的。

此代码适用于mySQL,但在PostgreSQL中不起作用。

SELECT a.ticketNum, b.memberName 
FROM tickettable a, memberstable b 
GROUP BY memberName 
ORDER BY by rand()  
LIMIT 2

我该怎么办?

1 个答案:

答案 0 :(得分:1)

Postgres中的随机数函数是random()。其次,group by不起作用,因为ticketNum未包括在内。你可以通过多种方式做你想做的事。这是一个相关的子查询方式:

SELECT m.memberName,
       (select t.ticketNum
        from tickettable t
        order by random()
        limit 1
       ) as ticketNum
FROM memberstable m
LIMIT 2;

此外,请注意以下事项:

  • ,子句中的from已替换为cross join。在from子句中避免使用逗号。始终使用明确的join语法。
  • 表别名是表名的缩写,使查询更容易理解。