截至目前,表格设置如下:
CREATE TABLE testing (
id INT NOT NULL,
text TEXT NOT NULL
);
CREATE TABLE users (
id INT NOT NULL,
name VARCHAR(32) NOT NULL
) UNIQUE KEY (id);
这基本上存储了人们的引用,而我想要做的是对每个查询都有一个随机引用。截至目前,我可以通过以下方式将其最小化为选择单个用户和报价:
SELECT name, MIN(text)
FROM testing
INNER JOIN users
ON users.id = testing.id
GROUP BY name
但是,如果有多个,则每次都不会选择随机文本。如何在不重复行的情况下每次支持另外一个?
答案 0 :(得分:2)
您可以使用row_number()
和random()
函数执行此操作:
select name, text
from (SELECT name, text, row_number() over (partition by name order by random()) as seqnum
FROM testing t INNER JOIN
users u
ON u.id = t.id
) t
where seqnum = 1;